温馨提示×

Ubuntu PHP日志太大怎么办

小樊
37
2026-08-31 07:39:40
栏目: 编程语言

Ubuntu 上 PHP 日志太大,最常见的原因是 PHP-FPM 或 Apache/Nginx 的 PHP 错误日志在持续写入(尤其是重复错误、Warning、Notice)。可以按下面步骤排查和清理。


一、先找到 PHP 日志在哪里

1️⃣ PHP-FPM(最常见)

ls -lh /var/log/php*

常见路径:

/var/log/php8.1-fpm.log
/var/log/php8.2-fpm.log
/var/log/php7.4-fpm.log

2️⃣ PHP 错误日志(php.ini 配置)

grep -R "error_log" /etc/php/

常见路径:

/var/log/php_errors.log

3️⃣ Nginx / Apache 相关

/var/log/nginx/error.log
/var/log/apache2/error.log

二、先安全清理(不要直接删除)

❌ 不建议:

rm php.log

✅ 推荐方式(清空但保留文件):

sudo truncate -s 0 /var/log/php8.1-fpm.log

或:

sudo > /var/log/php8.1-fpm.log

三、限制日志大小(非常重要)

✅ 方法 1:PHP-FPM 日志轮转(推荐)

Ubuntu 默认使用 logrotate,检查配置:

cat /etc/logrotate.d/php8.1-fpm

没有的话可以新建:

sudo nano /etc/logrotate.d/php-custom

示例(自动切割 + 压缩 + 保留 7 天):

/var/log/php*.log {
    daily
    missingok
    rotate 7
    compress
    delaycompress
    notifempty
    create 0640 www-data adm
    postrotate
        systemctl reload php8.1-fpm > /dev/null 2>&1 || true
    endscript
}

测试:

sudo logrotate -d /etc/logrotate.d/php-custom

✅ 方法 2:关闭不必要的 PHP 错误日志

编辑 php.ini:

sudo nano /etc/php/8.1/fpm/php.ini

推荐生产环境配置:

display_errors = Off
log_errors = On
error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED
error_log = /var/log/php_errors.log

⚠️ 不建议直接 log_errors = Off(会掩盖真实问题)


四、解决“越写越大”的根本原因

1️⃣ 查看日志里最多的错误

tail -n 1000 /var/log/php8.1-fpm.log | sort | uniq -c | sort -nr | head

2️⃣ 常见原因

  • 重复 Warning / Notice(如未定义变量)
  • 某个 PHP 文件死循环或异常
  • 第三方插件疯狂报错
  • 被爬虫或扫描器攻击

✅ 解决方式:

  • 修复代码
  • 使用 set_error_handler() 控制日志
  • Web 服务器限流(Nginx limit_req)

五、临时紧急处理(线上服务器)

# 清空日志
sudo truncate -s 0 /var/log/php*.log

# 重启 PHP-FPM
sudo systemctl restart php8.1-fpm

六、总结(推荐方案)

最推荐组合

  1. logrotate 限制日志大小
  2. 生产环境关闭 Notice / Deprecated
  3. 定期排查高频错误,而不是只清日志

如果你愿意,可以把:

  • PHP 版本
  • 用的是 Nginx / Apache
  • 日志路径

发给我,我可以帮你写一份 完全适合你服务器的最小配置方案

0