在 CentOS 上 PHP 日志过大 通常是由以下几个常见原因导致的,你可以对照排查:
如果 php.ini 中设置:
error_reporting = E_ALL
display_errors = Off
log_errors = On
而生产环境本应只记录严重错误,却记录了 Notice / Warning,日志会迅速增长。
✅ 建议生产环境:
error_reporting = E_ERROR | E_PARSE | E_CORE_ERROR | E_COMPILE_ERROR
CentOS 默认 不会自动切割 PHP 日志,除非你手动配置。
常见日志位置:
/var/log/php-fpm/error.log/var/log/php/php_errors.log如果没有 logrotate:
ls /etc/logrotate.d/ | grep php
如果没有,日志会一直追加。
✅ 可新建:
/etc/logrotate.d/php-fpm
示例:
/var/log/php-fpm/*.log {
daily
missingok
rotate 14
compress
notifempty
create 0640 www www
sharedscripts
postrotate
systemctl reload php-fpm > /dev/null 2>&1 || true
endscript
}
如果你开启了:
slowlog = /var/log/php-fpm/slow.log
request_slowlog_timeout = 1s
只要有慢请求,就会持续写入。
✅ 检查:
cat /etc/php-fpm.d/www.conf | grep slow
例如:
foreach ($users as $u) {
error_log("user: " . $u);
}
try {
...
} catch (Exception $e) {
error_log($e);
}
如:
如果:
PHP 日志会呈 线性增长
比如:
都写到了同一个文件
# 查看日志大小
du -sh /var/log/php*
# 查看增长最快的日志
tail -f /var/log/php-fpm/error.log
# 查看错误类型
grep -oE "PHP (Notice|Warning|Error)" /var/log/php-fpm/error.log | sort | uniq -c
✅ 90% 的情况是因为:
如果你愿意,可以把:
发出来,我可以帮你 精准定位是哪一类问题。