php 7.3 错误日志写入需同时满足:log_errors = on、error_log 指向绝对可写路径、php 进程加载正确 php.ini(如 /www/server/php/73/etc/php.ini),并重载服务;缺一不可。

PHP 7.3 的错误日志不会自动写入你设的路径,必须同时满足三个硬性条件:log_errors = On、error_log 指向绝对可写路径、PHP 进程实际加载了该 php.ini 文件——缺一不可。
确认当前生效的 php.ini 路径
宝塔面板里每个 PHP 版本(如 73)有独立配置文件,/www/server/php/73/etc/php.ini 才是 Web 请求真正读取的;/etc/php.ini 或 CLI 下的配置对 FPM 完全无效。最可靠的方式是访问 phpinfo() 页面,找 “Loaded Configuration File” 行。如果看到的是空值或错误路径,说明你改的根本没被加载。
log_errors 和 error_log 必须成对开启
只写 error_log = /www/wwwroot/site.com/runtime/php_error.log 没用,必须同步设置:log_errors = On(注意是字符串 On,不是 1 或 on)。常见错误包括:
-
log_errors = Off或被注释掉 -
display_errors = On干扰判断,生产环境务必关掉 -
error_reporting级别太低,比如只设E_ERROR,漏掉E_WARNING类日志
路径权限和重载服务是落地关键
即使配置全对,目录不存在、属主不是 www、没重载 PHP-FPM,日志照样为空。操作时必须检查:
- 目标目录存在:
mkdir -p /www/wwwroot/site.com/runtime - 属主正确:
chown -R www:www /www/wwwroot/site.com/runtime - 权限足够:
chmod 755 /www/wwwroot/site.com/runtime - 重载对应版本:
service php-fpm-73 reload(宝塔面板点“重载配置”,不是“保存”)
验证方法:写一个触发致命错误的脚本(如调用 undefined_function()),立刻检查日志文件是否有新增行。没有?先跑 ls -l /www/wwwroot/site.com/runtime 看属主和权限。
ini_set() 动态设置只在脚本内生效,且有前置限制
适合临时调试单个入口,但必须满足两个前提:
- 调用顺序不能错:必须先
ini_set('log_errors', 'On'),再ini_set('error_log', '/path/to/log') - 不能晚于任何错误发生——也就是说,必须放在脚本最开头,且前面不能有语法错误或未定义函数调用
动态设置无法覆盖 log_errors = Off 的全局禁用状态,如果 php.ini 里 log_errors 是 Off,ini_set() 也开不了日志。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











