PHP报错不显示错误信息,通常因display_errors=Off且error_reporting级别过低导致错误被静默忽略;需确认并修改php.ini中display_errors=On、error_reporting=E_ALL、log_errors=On三项配置,重启服务后验证。

PHP报错页面不显示错误信息,通常不是代码没出错,而是错误报告被关掉了。最常见的情况是 display_errors = Off,加上 error_reporting 级别太低,导致致命错误、警告甚至语法错误都被静默吞掉,只留下白屏或500错误。
确认当前生效的php.ini路径
别凭感觉改错文件。在网站根目录新建一个 info.php,内容为:
<?php phpinfo(); ?>
访问该页面,搜索“Loaded Configuration File”,看到的路径才是你真正要编辑的 php.ini。注意:CLI(命令行)和Web环境可能加载不同配置,php --ini 可查CLI用的ini。
立即学习“PHP免费学习笔记(深入)”;
修改关键三项配置
用文本编辑器打开上一步确认的 php.ini,找到并确保以下三行设置正确:
- display_errors = On —— 让错误直接输出到浏览器(仅限开发环境)
- error_reporting = E_ALL —— 报告所有错误类型,包括 Notice、Warning、Parse Error 等
- log_errors = On —— 同时把错误写进日志,避免页面不显示时彻底失联
可选但推荐:指定 error_log = /path/to/php_error.log,并确保该路径对Web服务器用户(如 www-data、apache 或 nginx)可写。
重启服务并验证是否生效
改完保存,必须重启对应服务才能生效:
- Apache:重启
httpd或apache2 - Nginx + PHP-FPM:重启
php-fpm和nginx - 宝塔/WAMP/XAMPP:在面板中点击“重载配置”或“重启PHP服务”
验证方法:新建一个 test_error.php,写入 <?php undefined_function(); ?>,访问它。如果看到明确的 Fatal error 提示,说明已成功开启。
排查常见覆盖干扰项
即使改了 php.ini,仍可能被其他配置覆盖:
- .htaccess 中写了
php_flag display_errors off(Apache环境) - Nginx 配置里通过
fastcgi_param PHP_VALUE强制设了display_errors=0 - 脚本开头用了
@错误抑制符,或调用了error_reporting(0) - 存在额外加载的
.user.ini或zzz-custom.ini文件,覆盖了主配置 - OPcache 或 PHP-FPM 进程未重启,缓存了旧配置



















