在 CentOS 上,PHP 日志过大的原因通常可以归结为以下几类。下面按常见原因 → 说明 → 解决建议来说明。
如果 php.ini 中:
error_reporting = E_ALL
display_errors = Off
log_errors = On
会导致所有警告、通知、废弃提示都写入日志。
✅ 建议:
error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED
log_errors = On
重启 PHP:
systemctl restart php-fpm
CentOS 默认用 logrotate,但如果:
日志会一直变大。
✅ 检查:
ls -lh /var/log/php*
cat /etc/logrotate.d/php-fpm
✅ 示例 logrotate:
/var/log/php-fpm/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 www www
sharedscripts
postrotate
systemctl reload php-fpm >/dev/null 2>&1
endscript
}
手动测试:
logrotate -fv /etc/logrotate.d/php-fpm
如果启用了:
slowlog = /var/log/php-fpm/slow.log
request_slowlog_timeout = 1s
高并发时慢日志会非常大。
✅ 建议:
常见问题:
error_log()✅ 排查:
tail -n 100 /var/log/php-fpm/error.log
grep -c "PHP Notice" /var/log/php-fpm/error.log
代码中:
error_log("debug info", 3, "/tmp/php_debug.log");
会无限增长。
✅ 建议:
# 1. 看日志大小
du -sh /var/log/php*
# 2. 看最近内容
tail -n 200 /var/log/php-fpm/error.log
# 3. 看 php.ini 配置
php --ini
grep -E "log_errors|error_log|error_reporting" /etc/php.ini
CentOS PHP 日志过大,90% 是因为 error_reporting 太全 + 没做 logrotate + 慢日志或调试日志没关。
如果你愿意,可以把:
发出来,我可以帮你精确分析并给出最小改动方案。