PHP error handling

PHP Error Handling


In PHP, the default error handling is very simple. An error message is sent to the browser with the file name, line number, and a message describing the error.


PHP Error Handling

Error handling is an important part when creating scripts and web applications. If your code lacks error detection coding, the program will look unprofessional and open the door to security risks.

This tutorial introduces some of the most important error detection methods in PHP.

We will explain different error treatment methods for you:

· Simple "DIE ()" statement

· Custom error and error trigger

·                                                                                                                      Error reporting


Basic error handling: using the die() function

The first example shows a simple script that opens a text file:

<?php
$file=fopen("welcome.txt","r");
?>

If the file does not exist, you will get an error like this:

Warning: fopen(welcome.txt) [function.fopen]: failed to open stream:

No such file or directory in /www/test/test/test.php on line 2

To avoid users getting error messages like the above, we check whether the file exists before accessing it:

<?php
if(!file_exists("welcome.txt"))
{
         die("文件不存在");
}
else
{
         $file=fopen("welcome.txt","r");
}
?>

Now, if the file does not exist, you will get an error message like this:

File does not exist

The above code is more efficient than the previous code, this is because It uses a simple error handling mechanism to terminate the script after an error.

However, simply terminating the script is not always the appropriate approach. Let's examine alternative PHP functions for handling errors.


#Create a custom error handler

Creating a custom error handler is very simple. We simply created a dedicated function that can be called when an error occurs in PHP.

The function must be able to handle at least two parameters (error level and error message), but can accept up to five parameters (optional: file, line-number and error context):

Syntax

error_function(error_level,error_message,

error_file,error_line,error_context)


QQ截图20161009093539.png


Error reporting levels

These error reporting levels are different types of errors handled by user-defined error handlers:



QQ截图20161009093559.png

QQ截图20161009093615.png


#Now, let’s create a function that handles errors:

<?php
function customError($errno, $errstr)
{
         echo "<b>Error:</b> [$errno] $errstr<br>";
         echo "脚本结束";
         die();
}
?>

The above code is a simple error handling function. When it is triggered, it gets the error level and error message. It then prints the error level and message, and terminates the script.

Now that we have created an error handling function, we need to determine when to trigger the function.


Set the error handler

PHP’s default error handler is the built-in error handler. We are going to transform the above function into the default error handler when the script is running.

You can modify the error handler so that it only applies to certain errors, so that the script can handle different errors in different ways. However, in this case, we are going to use our custom error handler for all errors:

set_error_handler("customError");

Since we want our custom function to To handle all errors, set_error_handler() requires only one parameter, and a second parameter can be added to specify the error level.

Example

Test this error handler by trying to output a variable that does not exist:

<?php
// 错误处理函数
function customError($errno, $errstr)
{
         echo "<b>Error:</b> [$errno] $errstr";
}
 // 设置错误处理函数
set_error_handler("customError");
 // 触发错误
echo($test);
?>

The output of the above code looks like this:

Error : [8] Undefined variable: test

Trigger Error

In the script where the user enters data, it is useful to trigger an error when the user's input is invalid. In PHP, this task is accomplished by the trigger_error() function.

Example

In this example, if the "test" variable is greater than "1", an error will occur:

<?php
$test=2;
if ($test>1)
{
         trigger_error("变量值必须小于等于 1");
}
?>

The output of the above code is as follows:

Notice: The variable value must be less than or equal to 1

in /www/test/text.php on line 5

You can trigger an error anywhere in the script by adding the first With two parameters, you can specify the error level to be triggered.

Possible error types:

· E_USER_ERROR - Fatal user-generated run-time error. The error cannot be recovered. Script execution was interrupted.

·              E_USER_WARNING - Non-fatal user-generated run-time warning. Script execution is not interrupted.

·            E_USER_NOTICE - Default. User-generated run-time notifications. Occurs when the script finds a possible error, but can also occur when the script is running normally.

Example

In this example, if the "test" variable is greater than "1", the E_USER_WARNING error occurs. If E_USER_WARNING occurs, we will use our custom error handler and end the script:

<?php
// 错误处理函数
function customError($errno, $errstr)
{
         echo "<b>Error:</b> [$errno] $errstr<br>";
         echo "脚本结束";
         die();
}
 // 设置错误处理函数
set_error_handler("customError",E_USER_WARNING);
 // 触发错误
$test=2;
if ($test>1)
{
         trigger_error("变量值必须小于等于 1",E_USER_WARNING);
}
?>

The output of the above code will look like this:

Error: [512] Variable value must be less than or equal to 1

End of script

Now that we have learned how to create our own errors and how to trigger them, let's study error records.

Error logging

By default, PHP sends error records to the server's logging system or file according to the error_log configuration in php.ini. By using the error_log() function, you can send error records to a specified file or remote destination.

Emailing yourself an error message is a good way to get notified of a specified error.

Send error message via E-Mail

In the following example, if a specific error occurs, we will send an email with an error message and end the script:

<?php
// 错误处理函数
function customError($errno, $errstr)
{
         echo "<b>Error:</b> [$errno] $errstr<br>";
         echo "已通知网站管理员";
         error_log("Error: [$errno] $errstr",1,
         "123123@qq.com","From: 123123@qq.com");
}
 // 设置错误处理函数
set_error_handler("customError",E_USER_WARNING);
 // 触发错误
$test=2;
if ($test>1)
{
         trigger_error("变量值必须小于等于 1",E_USER_WARNING);
}
?>

The output of the above code is as follows:

Error: [512] The variable value must be less than or equal to 1

The website administrator has been notified

Received from the above code The email is as follows:

Error: [512] The variable value must be less than or equal to 1

This method is not suitable for all errors. General errors should be logged on the server using the default PHP logging system.


Continuing Learning
||
<?php $test=2; if ($test>1) { trigger_error("变量值必须小于等于 1"); } ?>
submitReset Code