返回

浏览器中显示 PHP 错误:彻底指南

php

如何在浏览器中显示 PHP 错误

作为一名资深的程序员,我经常遇到 PHP 脚本在浏览器中显示空白页面的问题,无法显示错误信息。这种令人沮丧的情况阻碍了我调试和修复脚本。为了帮助解决这个问题,我将分享一些行之有效的步骤,旨在帮助你深入了解 PHP 错误处理机制,并在浏览器中成功显示错误信息。

检查 PHP.ini 设置

PHP.ini 文件包含 PHP 脚本运行所必需的关键配置设置。确保以下设置已正确配置:

  • display_errors 设置为 On
  • error_reporting 设置为 E_ALL

检查 Web 服务器配置

对于 Apache Web 服务器:

  • httpd.conf 文件中查找 php_flag display_errors On

对于 Nginx Web 服务器:

  • nginx.conf 文件中查找 fastcgi_param PHP_FLAG display_errors On;

验证错误日志

PHP 错误日志通常位于 /var/log/php-errors.log,它包含有关脚本执行期间发生的错误的详细信息。检查该日志以查看错误是否已记录。

禁用 Opcache

Opcache 是一种 PHP 优化器,可以缓存脚本,从而加快执行速度。但是,它可能会导致错误信息不显示。尝试禁用 Opcache 并重新加载脚本。

使用 error_get_last() 函数

error_get_last() 函数返回有关最后一个 PHP 错误的详细信息。将其添加到脚本顶部,如下所示:

<?php
$error = error_get_last();
if ($error !== NULL) {
  echo '<pre>';
  var_dump($error);
  echo '</pre>';
}
?>

检查 APC 配置

APC 是一种 PHP 缓存系统。检查其配置,确保它不会抑制错误信息。

强制显示错误

在脚本顶部添加以下行以强制浏览器显示错误信息:

<?php
ini_set('html_errors', true);
?>

检查 Web 浏览器设置

确保你的 Web 浏览器已配置为显示错误。在 Chrome 中,转到 设置 > 更多工具 > 开发者工具,然后选中 显示 JavaScript 控制台日志

示例代码

以下示例代码触发一个错误并强制显示该错误:

<?php
ini_set('html_errors', true);

$x = 100; // 未声明变量
echo "x is: $x"; // 未封闭语句
?>

常见问题解答

1. 为什么我在禁用 Opcache 后仍然看不到错误?

可能是其他因素导致错误被抑制,例如 APC 或 Web 服务器配置。

2. 如何在生产环境中显示错误?

在生产环境中,显示错误信息可能会带来安全风险。相反,使用日志记录或自定义错误处理来记录错误。

3. 我看到 E_NOTICEE_WARNING 错误,如何抑制它们?

使用 error_reporting(E_ALL & ~E_NOTICE & ~E_WARNING) 来抑制这些错误。

4. 我如何自定义错误消息?

使用 set_error_handler() 函数设置自定义错误处理程序,以自定义错误消息和处理。

5. 我在 Windows 环境中工作,是否有不同的步骤?

步骤大致相同,但错误日志可能位于其他位置(例如 C:\Windows\Temp\php-errors.log)。