400 8949 560

NEWS/新闻

分享你我感悟

您当前位置> 主页 > 新闻 > 技术开发

phpinfo输出含错误等级吗_查error_reporting设定技巧【审看】

发表时间:2026-01-14 00:00:00

文章作者:絕刀狂花

浏览次数:

phpinfo() 不直接显示 error_reporting 的级别名称,仅显示 Local Value(当前生效整数值)和 Master Value(php.ini 原始值);需结合 error_reporting() 函数与位运算反查常量组合,并通过 trigger_error 实际验证是否生效。

phpinfo() 不直接显示当前 error_reporting 的数值或级别名称,但能查到它的原始配置值;要准确判断错误等级是否生效,得结合 phpinfo 输出和实际运行验证。

phpinfo() 里怎么看 error_reporting 配置

phpinfo() 页面中搜索 error_reporting,你会看到两列关键信息:

  • Local Value:当前脚本生效的值(可能被 ini_set().htaccess 修改过)
  • Master Value:php.ini 中原始设定值

注意:Local Value 显示的是整数(如 22527),不是 E_ALL & ~E_NOTICE 这类可读形式。PHP 8.0+ 默认值通常是 22527(即 E_ALL & ~E_DEPRECATED & ~E_STRICT)。

把整数 error_reporting 值转成可读的错误常量组合

光看数字很难判断覆盖了哪些错误类型。可以用这段代码快速反查:

立即学习“PHP免费学习笔记(深入)”;

echo error_reporting() . "\n";
var_dump(array_filter([
    'E_ERROR' => E_ERROR,
    'E_WARNING' => E_WARNING,
    'E_PARSE' => E_PARSE,
    'E_NOTICE' => E_NOTICE,
    'E_CORE_ERROR' => E_CORE_ERROR,
    'E_CORE_WARNING' => E_CORE_WARNING,
    'E_COMPILE_ERROR' => E_COMPILE_ERROR,
    'E_COMPILE_WARNING' => E_COMPILE_WARNING,
    'E_USER_ERROR' => E_USER_ERROR,
    'E_USER_WARNING' => E_USER_WARNING,
    'E_USER_NOTICE' => E_USER_NOTICE,
    'E_STRICT' => E_STRICT,
    'E_RECOVERABLE_ERROR' => E_RECOVERABLE_ERROR,
    'E_DEPRECATED' => E_DEPRECATED,
    'E_USER_DEPRECATED' => E_USER_DEPRECATED,
], function($v) {
    return error_reporting() & $v;
}));

运行后会列出当前启用的所有错误常量,比硬算位运算直观得多。

为什么 phpinfo() 看到的 Local Value 和实际报错不一致

常见原因有这几个:

  • 脚本开头调用了 error_reporting(0)ini_set('error_reporting', 0),导致 phpinfo() 显示的 Local Value0,但页面没报错——这其实是预期行为
  • Web 服务器(如 Apache)用 php_admin_value error_reporting 强制设为 0,此时 ini_set() 无法覆盖,phpinfo()Local Value 仍显示 0,但你不能靠 error_reporting() 函数改回来
  • display_errors = Off 时,错误仍会记录到日志(error_log),但不会输出到页面,容易误以为“没报错”

真正要确认错误是否触发,得配合 trigger_error('test', E_USER_NOTICE) 手动触发并观察输出或日志。

修改 error_reporting 后不生效?优先检查这三处

改完配置却没反应,大概率卡在这几个地方:

  • PHP 是 CGI/FPM 模式?改了 php.ini 必须重启 php-fpm 进程,只 reload Nginx 不够
  • 用了 Docker?确认挂载的 php.ini 确实被容器内 PHP 加载(查 phpinfo() 底部的 Loaded Configuration File 路径)
  • 框架(如 Laravel、Symfony)在启动时主动调用 error_reporting(E_ALL) 或类似逻辑,覆盖了 ini 设置

最稳妥的方式是:在目标脚本开头加一行 var_dump(error_reporting());,而不是只信 phpi

nfo() 里的静态快照。

相关案例查看更多