温馨提示×

centos php日志为何过大

小樊
37
2026-09-03 01:48:25
栏目: 编程语言

在 CentOS 上,PHP 日志过大的原因通常可以归结为以下几类。下面按常见原因 → 说明 → 解决建议来说明。


一、最常见原因

1. 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

2. 日志未做切割(logrotate 未生效)

CentOS 默认用 logrotate,但如果:

  • 自定义了 PHP 日志路径
  • 或 php-fpm 没释放文件句柄

日志会一直变大。

✅ 检查:

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

3. PHP-FPM 慢日志开启

如果启用了:

slowlog = /var/log/php-fpm/slow.log
request_slowlog_timeout = 1s

高并发时慢日志会非常大。

✅ 建议:

  • 仅调试时开启
  • 或调大超时时间

4. 应用代码问题(死循环 / 异常堆叠)

常见问题:

  • 捕获异常后不退出,反复记录
  • 第三方库疯狂写 log
  • 循环里 error_log()

✅ 排查:

tail -n 100 /var/log/php-fpm/error.log
grep -c "PHP Notice" /var/log/php-fpm/error.log

5. 使用了 error_log() 写文件

代码中:

error_log("debug info", 3, "/tmp/php_debug.log");

会无限增长。

✅ 建议:

  • 正式环境禁用调试 log
  • 使用日志库(Monolog)

二、快速定位步骤(推荐)

# 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 + 慢日志或调试日志没关。

如果你愿意,可以把:

  • PHP 版本
  • 日志路径
  • php.ini 相关配置

发出来,我可以帮你精确分析并给出最小改动方案。

0 踩