CentOS 上 PHP 日志为空,通常不是“没报错”,而是日志根本没配置到你能看到的地方,或者错误被抑制/没触发。下面按最常见原因逐一说明和对症排查。
PHP 在 CentOS 上常见的有 3 类日志:
很多人只看 /var/log/php_errors.log,但其实根本没启用。
检查:
php --ini
看 php.ini 里是否这样:
log_errors = On
error_log = /var/log/php_errors.log
如果:
log_errors = Off
或
error_log =
那 日志一定为空。
✅ 解决:
log_errors = On
error_log = /var/log/php_errors.log
然后:
touch /var/log/php_errors.log
chown apache:apache /var/log/php_errors.log
systemctl restart php-fpm httpd
CentOS 常见:
如果是 PHP-FPM:
vi /etc/php-fpm.d/www.conf
确认:
catch_workers_output = yes
php_admin_value[error_log] = /var/log/php-fpm/php-error.log
php_admin_value[log_errors] = On
否则 PHP 错误不会写日志。
很多开发环境:
display_errors = On
log_errors = Off
结果:
error_reporting = E_ALL
如果设置成:
error_reporting = E_ERROR
很多 warning / notice 就不会记录。
即使配置对了,也可能:
ls -l /var/log/php_errors.log
如果属主不是 apache / nginx / php-fpm 用户,就写不进去。
例如:
@file_get_contents('xxx');
或:
error_reporting(0);
这种 不会写日志。
比如:
那日志为空是正常的
# 1. 当前 PHP 配置
php -i | grep error_log
php -i | grep log_errors
# 2. 测试写日志
<?php
error_log("TEST PHP LOG");
?>
# 3. 看日志
tail -f /var/log/php_errors.log
如果连 TEST PHP LOG 都不出现,说明配置或权限问题。
log_errors = On
error_log = /var/log/php_errors.log
; php.ini
log_errors = On
; www.conf
catch_workers_output = yes
php_admin_value[error_log] = /var/log/php-fpm/error.log
php_admin_value[log_errors] = On
如果你愿意,我可以精准定位,只需要你贴:
php -vphp --ini我可以直接告诉你“为什么是空的”。