温馨提示×

ubuntu php日志为何变大

小樊
47
2026-09-18 14:17:46
栏目: 编程语言

在 Ubuntu 上,PHP 日志变大的原因通常可以归结为以下几类。你可以对照排查:


一、PHP 错误/异常过多(最常见)

1. 错误级别设置过低

php.ini 中:

error_reporting = E_ALL
display_errors = Off
log_errors = On

如果程序有:

  • 大量 Notice / Warning
  • 未捕获的异常
  • 循环中的错误

日志会迅速增长。

✅ 建议:

error_reporting = E_ERROR | E_WARNING | E_PARSE

2. 第三方库或框架报错

  • Laravel / Symfony 等框架
  • 调试模式未关闭(APP_DEBUG=true)
  • 废弃函数警告

二、日志未轮转(Log Rotation 失效)

Ubuntu 通常使用 logrotate 管理日志。

检查 PHP 日志是否在轮转

ls -lh /var/log/php*
cat /etc/logrotate.d/php

常见问题:

  • 自定义 PHP 日志路径未配置 logrotate
  • copytruncate 未使用,导致 PHP 仍写旧文件

✅ 示例 logrotate 配置:

/var/log/php/*.log {
    daily
    missingok
    rotate 14
    compress
    delaycompress
    notifempty
    copytruncate
}

三、PHP-FPM 与 Web 服务器日志混淆

PHP-FPM 日志

; www.conf
catch_workers_output = yes
php_admin_value[error_log] = /var/log/php-fpm.log

如果开启 catch_workers_output,所有 stdout/stderr 都会进日志,极易变大。

✅ 建议:

catch_workers_output = no

四、访问量 or 爬虫导致错误放大

  • 高并发
  • 恶意爬虫
  • 接口报错被反复调用

可用:

tail -f /var/log/php/error.log

看是否是重复错误。


五、自定义日志写入失控

代码中:

file_put_contents('/var/log/app.log', $data, FILE_APPEND);
  • 没限制大小
  • 没清理机制
  • 调试日志上线未删除

六、系统或容器环境异常

  • Docker 容器未挂载日志卷
  • PHP 进程 crash loop
  • OOM / segfault 反复记录

快速排查清单 ✅

# 1. 看日志大小
du -sh /var/log/php*

# 2. 看最近日志
tail -n 100 /var/log/php/error.log

# 3. 看 PHP 配置
php --ini
php -i | grep error_log

# 4. 看 logrotate
logrotate -d /etc/logrotate.d/php

如果你愿意,可以贴出:

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

我可以帮你精准定位是哪一种原因。

0 踩