PHP 8.5.5 错误日志需同时启用 log_errors = On 和 error_log 绝对可写路径,并确认 php.ini 实际生效路径、权限正确且重载 PHP-FPM,三者缺一不可。

PHP 8.5.5 的错误日志输出功能不会自动生效,必须手动配对启用 log_errors 和 error_log,且路径、权限、服务重载三者缺一不可。
确认当前生效的 php.ini 路径
PHP-FPM 和 CLI 可能加载不同配置文件,改错位置等于白改。直接访问一个含 phpinfo() 的页面,看 “Loaded Configuration File” 行;或者命令行执行 php --ini 查 CLI 配置。宝塔用户注意:Web 请求实际读的是 /www/server/php/85/etc/php.ini 这类路径,不是 /etc/php.ini。
必须同时开启 log_errors 并指定 error_log 路径
只写 error_log = /var/log/php_error.log 不起作用,log_errors 必须设为字符串 On(不是 1 或 on)。常见错误配置:
-
log_errors = Off—— 日志开关根本没打开 -
error_log = ./php_error.log—— 相对路径在 FPM 下基本无效,必须用绝对路径 -
error_log = /tmp/php_error.log——/tmp可能被定时清理,或属主不是www
推荐写法:error_log = /www/wwwroot/myapp/runtime/php_error.log,并确保该目录存在、属主为 Web 进程用户(如 www),权限至少 755。
立即学习“PHP免费学习笔记(深入)”;
检查 display_errors 和 error_reporting 是否干扰判断
线上环境 display_errors = Off 是硬性前提,否则错误会打屏而跳过日志;但 error_reporting 要设够高,否则低级别错误不记录。生产环境建议:
display_errors = Offlog_errors = Onerror_reporting = E_ALL & ~E_DEPRECATED & ~E_NOTICE
别信“默认就开”,PHP 8.5.5 默认 error_reporting 值因安装方式而异,必须显式设置。
改完必须重载 PHP-FPM,不能只保存配置
修改 php.ini 后,必须执行重载命令,例如:service php-fpm-85 reload 或宝塔面板里点对应 PHP 版本右侧的「重载配置」。验证是否生效:
- 执行
php -r "error_log('test', 0);",再查你设的error_log文件是否有新增行 - 触发一个致命错误:
file_put_contents('/tmp/test.php', '<?php undefined_func(); ?>');,然后访问该 URL,看日志是否捕获到Fatal error行
容器环境要额外留意:有些镜像把 error_log = syslog 或直接输出到 stderr,此时日志不在文件里,得查 docker logs 或平台日志面板。



















