如何在 PHP 中显示所有错误?

2025年3月17日 | 阅读 3 分钟

PHP 应用程序在脚本运行时会生成多个级别的错误和警告。PHP 提供了四种不同的方式来显示这些错误和警告,如下所示:

  1. error_reporting: 它显示所有级别的错误,除了 E-NOTICE、E-STRICT 和 E_DEPRECATED 级别的错误。
  2. display_errors: 默认情况下,display_errors 的值为 off。将其设置为 on 可以显示所有错误,包括解析(语法)错误。
  3. log_errors: log_errors 的默认值为 ON,表示是否应该进行错误日志记录。
  4. error_log string: error_log 字符串设置脚本错误应记录到的文件名。

下面给出几行代码,将其添加到您的 PHP 文件中以显示错误。这是显示所有 PHP 错误和警告的最快方法。

上述函数和指令的工作方式如下:

ini_set()

此函数尝试覆盖 php.ini 文件中找到的配置。

display_errors

display_errors 是一个指令,它决定错误是显示给用户还是保持隐藏。它不处理在 PHP 启动序列期间发生的错误。

display_startup_errors

display_startup_errors 也是一个指令,用于在 PHP 启动序列期间查找错误。

error_reporting()

error_reporting 是 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 文件进行以下更改,以显示所有错误(包括解析错误),并重新启动 xampp 中的 apache 服务器

将 PHP.ini 文件中的 display_errors 指令设置为“on”。它将显示所有无法通过仅仅调用 ini_set() 函数来显示的错误,例如——语法错误和解析错误。

程序

当 php.ini 文件中 display_errors禁用或设置为 off 时的 PHP 程序。

输出

display_errors 指令被禁用时,输出将如下方截图所示。

How to display all errors in PHP

输出

当 php.ini 文件中 display_errors启用或设置为 on,并且服务器已重新启动时,上述程序的输出。

How to display all errors in PHP

错误报告级别

正如我们已经讨论过的,PHP 会产生不同级别的错误。那么,让我们了解 PHP 代码中会生成哪些类型的错误。

Constant描述
E_ERROR致命运行时错误。脚本的执行已停止。
E_WARNING非致命运行时错误。脚本的执行不会停止。
E_PARSE编译时错误,由解析器生成。
E_NOTICE这是一个运行时通知。PHP 脚本发现了可能是一个错误的东西。
E_USER_ERRORE_USER_ERROR 类似于 E_ERROR,但它是通过使用 trigger_error() 函数由 PHP 脚本生成的。这是一个致命的用户生成错误消息。
E_USER_WARNINGE_USER_WARNING 是一个非致命的用户生成警告,它类似于 E_WARNING。但它也是通过使用 trigger_error() 函数由 PHP 脚本生成的。
E_USER_NOTICE这是一个用户生成的通知,类似于 E_NOTICE。
E_STRICT这并非严格意义上的错误。在 PHP 5.4.0 版本之后,它成为 E_ALL 的一部分。
E_ALL启用所有错误和警告。