在 PHP 中显示所有错误

Subodh Poudel 2023年1月30日
  1. error_reporting('E_ALL') 函数和 ini_set() 函数与 display_errors 指令一起使用以显示警告错误
  2. error_reporting('-1') 函数和 ini_set() 函数与 display_errorsdisplay_startup_errors 指令一起使用以显示错误
  3. 修改 php.ini 文件中的指令以显示所有错误,包括 PHP 中的解析错误
在 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_errorsdisplay_startup_errors 指令一起使用以显示错误

error_reporting() 函数还采用整数值作为参数。我们可以使用这种方法来显示 PHP 中的错误。PHP 中有很多错误级别。-1 级别表示所有 PHP 错误。传递值 -1 可以在 PHP 的未来版本中使用,即使使用新的级别和常量也是如此。有时,ini_set() 函数中的 display_errors 指令并不总是处理 PHP 启动时遇到的错误。在这种情况下,我们可以使用 display_startup_errors 来显示错误。

例如,将 ini_set() 函数的变量设置为 display_startup_errorsdisplay_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_errorsdisplay_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 Poudel
Subodh Poudel avatar Subodh Poudel avatar

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

相关文章 - PHP Error