PHP 如何显示所有错误
一个PHP应用程序在脚本运行时会生成多个级别的错误和警告。PHP提供了四种不同的方法来显示这些错误和警告,如下所示:
- error_reporting: 它显示除了E-NOTICE、E-STRICT和E_DEPRECATED级别的错误以外的所有级别的错误。
- display_errors: 默认情况下,display_errors的值为 off 。将其设置为 on 可显示所有错误,包括解析(语法)错误。
- log_errors: log_errors的默认值为 ON ,表示是否应该记录错误日志。
- error_log string: error_log string设置了脚本错误应该被记录的文件名。
下面给出了几行代码,请将其添加到你的PHP文件中以显示错误。这是显示所有PHP错误和警告的最快方式。
ini_set ('display_errors', 1);
ini_set ('display_startup_errors', 1);
error_reporting (E_ALL);
上述功能和指令的工作方式如下:
ini_set()
此函数尝试覆盖 php.ini 文件中找到的配置。
display_errors
display_errors是一个 指令 ,决定错误是否对用户显示或保持隐藏。它不处理发生在PHP启动序列期间的错误。
display_startup_errors
display_startup_errors也是一个 指令 ,用于寻找PHP启动序列期间的错误。
error_reporting()
error_reporting是PHP的一个 内置函数 ,用于显示错误。
程序
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
//include a php file which does not exist
include("jtp.php");
?>
输出
输出将会对浏览器显示一个警告。
Warning: include(jtp.php): failed to open stream: No such file or directory in C:\xampp\htdocs\program\phperror.php on line 6
Warning: include(): Failed opening 'jtp.php' for inclusion (include_path='C:\xampp\php\PEAR') in C:\xampp\htdocs\program\phperror.php on line 6
注意:这两个指令display_errors和display_startup_errors都无法显示解析错误。因此,必须修改PHP.ini配置文件。
配置PHP.ini以显示所有错误和警告
必须在php.ini文件中进行以下更改,以显示所有错误,包括解析错误,并重新启动apache服务器在xampp中。
display_errors = on
在PHP.ini文件中将 display_errors 指令设置为” on” ,它将显示所有错误,这些错误不能通过调用ini_set()函数来显示,例如语法和解析错误。
程序
当 display_errors 被 禁用 或在php.ini文件中被设置为 off 时的PHP程序。
<?php
//semicolon is missing, which generates parse error in php code
for (i = 5;i >= 0 $i--) {
echo "It will generate parse error";
}
?>
输出
当 display_errors 指令 禁用 时,输出将如下屏幕截图显示给浏览器。
输出:
以上程序的输出情况当 显示错误 被启用或设置为 开启 在php.ini文件中,并且服务器重新启动后。
错误报告级别
正如我们已经讨论过的,PHP会产生不同级别的错误。所以,让我们了解一下在PHP代码中会生成哪些类型的错误。
常量 | 描述 |
---|---|
E_ERROR | 致命的运行时错误。脚本的执行已停止。 |
E_WARNING | 非致命的运行时错误。脚本的执行不会停止。 |
E_PARSE | 由解析器生成的编译时错误。 |
E_NOTICE | 运行时通知。PHP脚本发现了可能是错误的东西。 |
E_USER_ERROR | E_USER_ERROR与E_ERROR类似,但它由PHP脚本使用trigger_error()函数生成。这是一个致命的用户生成的错误消息。 |
E_USER_WARNING | E_USER_WARNING是一个非致命的用户生成的警告,它与E_WARNING类似。但它也由PHP脚本使用trigger_error()函数生成。 |
E_USER_NOTICE | 它是一个用户生成的通知,类似于E_NOTICE。 |
E_STRICT | 它不严格属于错误。自PHP版本5.4.0后成为E_ALL的一部分。 |
E_ALL | 启用所有错误和警告。 |