温馨提示×

centos php日志为啥过大

小樊
39
2026-10-06 01:27:31
栏目: 编程语言

在 CentOS 上 PHP 日志过大 通常是由以下几个常见原因导致的,你可以对照排查:


一、PHP 错误日志配置不合理(最常见)

1. 错误级别太低

如果 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

2. 没有日志切割(logrotate)

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
}

二、PHP-FPM 慢日志(slow log)

如果你开启了:

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

只要有慢请求,就会持续写入。

✅ 检查:

cat /etc/php-fpm.d/www.conf | grep slow

三、程序代码问题(重点)

1. 循环中写日志

例如:

foreach ($users as $u) {
    error_log("user: " . $u);
}

2. 异常被 catch 后仍然记录

try {
    ...
} catch (Exception $e) {
    error_log($e);
}

3. 第三方库疯狂报错

如:

  • 老旧框架
  • 调试模式未关闭(debug = true)

四、访问量过大 + 错误率高等

如果:

  • 网站访问量大
  • 同时又大量 500 / 404 / 超时

PHP 日志会呈 线性增长


五、日志路径写错导致重复记录

比如:

  • Nginx 错误日志
  • 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% 的情况是因为:

  1. 错误级别太低(记录了 Notice)
  2. 没有日志切割
  3. 程序代码或框架在刷日志

如果你愿意,可以把:

  • PHP 版本
  • php.ini 相关配置
  • 日志路径
  • 日志样例(前 20 行)

发出来,我可以帮你 精准定位是哪一类问题。

0 踩