在 PHP 中显示所有错误
-
将
error_reporting('E_ALL')
函数和ini_set()
函数与display_errors
指令一起使用以显示警告错误 -
将
error_reporting('-1')
函数和ini_set()
函数与display_errors
和display_startup_errors
指令一起使用以显示错误 -
修改
php.ini
文件中的指令以显示所有错误,包括 PHP 中的解析错误
我们将介绍一种使用 error_reporting()
函数和 ini_set()
函数在 PHP 脚本中显示错误的方法。第一种方法报告错误,而第二种方法覆盖 php.ini
文件或 Apache 配置文件并打开以仅显示当前脚本的错误。
我们将演示另一种使用相同函数显示 PHP 错误的方法-第一种方法中的 error_reporting()
函数和 ini_set()
函数。将该方法与第一个方法区分开来的关键点是,它使用另一个带有 display_startup_errors
指令的 ini_set()
函数,而 error_reporting()
函数则采用整数值作为参数。
我们将介绍一个永久性的解决方案,以显示所有 PHP 错误,并更改 php.ini
文件中的配置。上面提到的两种方法将无助于显示解析错误,例如缺少大括号和分号。
将 error_reporting('E_ALL')
函数和 ini_set()
函数与 display_errors
指令一起使用以显示警告错误
我们可以使用 error_reporting()
函数报告 PHP 脚本中的所有类型的错误。为此,我们使用命名常量 E_ALL
作为函数中的参数。它报告各种 PHP 错误。然后,我们可以使用 ini_set()
函数显示报告的错误。该函数将指令 display_errors
设置为 true。因此,它在 php.ini
文件中设置配置以设置错误的可见性。但是,执行当前脚本后,指令的原始值将在 php.ini
文件中恢复。
为了演示,将 error_reporting(E_ALL)
编写为脚本代码的第一行。在 ini_set
功能中将 display_errors
设置为 1
。回显诸如'This is a warning errorr'
之类的消息。使用 include()
函数可包含一个名为 file.php
的外部文件。然后运行脚本。
下面的示例尝试在 PHP 中显示警告错误。此错误类型通知脚本中存在一些问题,而没有停止脚本的运行。该示例在脚本中包含文件 file.php
。由于根文件夹中没有此类文件,因此脚本将不会加载该文件并显示错误。由于这是一个警告错误,因此 echo
语句会与错误一起运行。要了解有关 error_reporting()
函数的更多信息,请访问 PHP 手册
示例代码:
# php 7.*
<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');
echo "This is a warning error";
include ("file.php");
?>
输出:
This is a warning error
**Warning**: include(file.php): failed to open stream: No such file or directory in **/var/www/html/index.php** on line **5**
**Warning**: include(): Failed opening 'file.php' for inclusion (include_path='.:/usr/share/php') in **/var/www/html/index.php** on line **5**
将 error_reporting('-1')
函数和 ini_set()
函数与 display_errors
和 display_startup_errors
指令一起使用以显示错误
error_reporting()
函数还采用整数值作为参数。我们可以使用这种方法来显示 PHP 中的错误。PHP 中有很多错误级别。-1
级别表示所有 PHP 错误。传递值 -1
可以在 PHP 的未来版本中使用,即使使用新的级别和常量也是如此。有时,ini_set()
函数中的 display_errors
指令并不总是处理 PHP 启动时遇到的错误。在这种情况下,我们可以使用 display_startup_errors
来显示错误。
例如,将 ini_set()
函数的变量设置为 display_startup_errors
和 display_errors
。在 ini_set()
函数中将它们设置为 true
,由 1
表示。将 error_reporting
设置为 -1
。将值 10 分配给变量 $a
并输出变量 $b
。
在下面的示例中,脚本遇到通知错误。该代码尝试打印未定义的变量。要了解有关 ini_set()
函数的更多信息,请访问 PHP 手册。
示例代码:
#php 7.x
<?php
ini_set('display_startup_errors', 1);
ini_set('display_errors', 1);
error_reporting(-1);
$a = 10;
echo $b;
?>
输出:
**Notice**: Undefined variable: b in **/var/www/html/index.php** on line **6**
修改 php.ini
文件中的指令以显示所有错误,包括 PHP 中的解析错误
我们可以修改 php.ini
文件中的指令,以在上述方法无效时显示 PHP 错误。php.ini
文件包含运行 PHP 脚本时所需的默认配置。上面提到的方法仅在运行时更改指令的值,而修改 php.ini
文件则永久更改这些值。但是,我们不应该在生产级别上遵循这种做法。查看 PHP 手册以了解有关 PHP 中配置文件的更多信息。
要更改 php.ini
文件指令的值,请首先在系统中找到该文件。使用以下脚本。
#php 7.x
<?php
phpinfo();
?>
找到 Loaded Configuration File
,你可以看到 php.ini
文件的位置。在文件中,找到指令 display_errors
和 display_startup_errors
,并将其值更改为 on
。找到 error_reporting
并将其更改为 error_reporting = E_ALL ^ E_NOTICE ^ E_WARNING
。然后,重新启动 Apache 的 Web 服务器。
例如,在 PHP 文件中,设置 error_reporting(-1)
。给变量 $a
赋值 Orange
,但不要在其后写分号。在另一行中打印变量。
在代码示例的输出部分中,遇到并显示了解析错误。因此,配置 php.ini
文件也可以显示解析错误。
代码示例:
#php 7.x
<?php
error_reporting(-1);
$a = "Orange"
echo $a;
?>
输出:
**Parse error**: syntax error, unexpected 'echo' (T_ECHO) in **/var/www/html/index.php** on line **6**
Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.
LinkedIn