display_errors = off不生效的根本原因是配置被多层级覆盖:php运行时函数、web服务器(apache/nginx)配置、框架/cms(如laravel的app_debug)、php-fpm池配置(php-fpm.ini或php_defines)均可能重新开启它,须通过phpinfo()确认loaded configuration file并逐层排查。

display_errors = Off 改了没生效,先确认改的是哪个 php.ini
最常见的情况是:你编辑了 C:\xampp\php\php.ini,但 PHP 实际加载的是 C:\xampp\apache\bin\php.ini(旧版残留或双配置冲突),或者反过来。XAMPP 8.0+ 默认启用 PHP-FPM,此时 Apache 不直接调用 PHP CLI 配置,而是走 FPM 管道,php-fpm.ini 里的 display_errors 会覆盖主 php.ini。
验证方法只有一条:在项目根目录建一个 info.php,内容为 <?php phpinfo(); ?>,浏览器打开后搜索 Loaded Configuration File,看到的路径才是真实生效的那个。
- 改完必须在 XAMPP 控制面板里对 Apache **先 Stop 再 Start**(点 Restart 不一定重载全部配置)
- 若用了 PHP-FPM 模式(XAMPP 8.0+ 默认),还要检查
C:\xampp\php\php-fpm.ini中是否也写了display_errors = Off - Apache 的
.htaccess或虚拟主机配置里如果用了php_flag display_errors off,也会覆盖 php.ini
error_reporting 应该设成 E_ALL & ~E_NOTICE 还是 0
error_reporting = 0 是彻底关掉所有错误报告,连 Parse error 都不显示——结果就是页面白屏,没有任何线索,开发时极其危险。
更合理的选择是过滤低风险提示,保留真正可能影响逻辑的错误:
-
error_reporting = E_ALL & ~E_NOTICE:屏蔽未定义变量、数组下标不存在等提示,保留E_WARNING和E_ERROR -
error_reporting = E_ALL & ~E_DEPRECATED & ~E_USER_NOTICE:再加一层,去掉弃用警告和用户级 Notice -
error_reporting = E_ALL | E_STRICT:PHP 7.4+ 开发环境推荐,等价于全开(E_STRICT已并入E_ALL)
注意:代码里写 error_reporting(0) 会覆盖 php.ini 设置,运行时优先级更高。
log_errors = On 但没看到 php_error.log?检查 error_log 路径和权限
只设 log_errors = On 不指定 error_log,错误默认写进 Apache 自己的日志(比如 C:\xampp\apache\logs\error.log),不是你想要的 PHP 专属日志文件。
必须显式指定路径,并确保目录存在且 Apache 进程有写权限:
- Windows:
error_log = "C:\xampp\apache\logs\php_error.log"(路径用双引号包裹,反斜杠要转义或用正斜杠) - macOS/Linux:
error_log = /opt/lampp/logs/php_error.log - 路径所在目录需存在;Apache 在 Windows 下以
SYSTEM账户运行,别设到需要管理员权限的根目录(如C:\)
开发 vs 生产环境的 error_reporting + display_errors 组合
开发环境目标是「快定位」,生产环境目标是「不泄露」,两者不能混用:
- 开发时:
display_errors = On+error_reporting = E_ALL & ~E_DEPRECATED,错误直接打在页面上 - 生产时:
display_errors = Off+log_errors = On+error_log显式指向可读写的日志文件 - 切记:
display_errors = Off不等于安全——如果代码里用了echo $undefined_var导致致命错误,页面仍可能暴露部分路径或结构,所以必须配合error_log查问题
最容易被忽略的是 PHP-FPM 模式下的双重配置,以及 error_log 路径权限问题——这两处一错,日志就静默丢弃,查不到任何线索。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











