温馨提示×

ubuntu php日志过大怎处理

小樊
42
2026-10-12 07:39:24
栏目: 编程语言

在 Ubuntu 上,PHP 日志过大通常是 PHP-FPM / Apache + PHP 的 error_log 或 php-fpm.log 持续增长导致的。可以从临时清理、定位来源、长期治理三个层面处理。


一、先确认是哪一个日志过大

常见 PHP 相关日志位置:

# PHP-FPM 错误日志
/var/log/php*/php-fpm.log
/var/log/php*/www-error.log

# Apache + PHP
/var/log/apache2/error.log

# Nginx + PHP-FPM
/var/log/nginx/error.log

# PHP 自身 error_log
php -i | grep error_log

查看大小:

du -sh /var/log/* 2>/dev/null | sort -h

二、临时处理(立即释放空间)

1️⃣ 清空日志(不删文件,避免服务报错)

sudo truncate -s 0 /var/log/php/7.4/fpm/php-fpm.log

或:

sudo sh -c ': > /var/log/php/7.4/fpm/php-fpm.log'

2️⃣ 重启 PHP-FPM(某些情况需要)

sudo systemctl restart php7.4-fpm

三、长期解决方案(推荐)

✅ 方案 1:开启 logrotate(最推荐)

Ubuntu 默认有 logrotate,但 PHP 日志有时没配置。

检查:

ls /etc/logrotate.d/

如果没有 PHP 配置,新建:

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

内容示例(按大小切割):

/var/log/php/*/*.log {
    missingok
    notifempty
    size 50M
    rotate 7
    compress
    delaycompress
    sharedscripts
    postrotate
        systemctl reload php7.4-fpm > /dev/null 2>&1 || true
    endscript
}

测试:

sudo logrotate -d /etc/logrotate.d/php-fpm
sudo logrotate -f /etc/logrotate.d/php-fpm

✅ 方案 2:减少 PHP 日志级别

编辑 php.ini:

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

推荐设置:

error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
log_errors = On
display_errors = Off

重启:

sudo systemctl restart php7.4-fpm

✅ 方案 3:限制日志大小(PHP-FPM)

编辑:

sudo nano /etc/php/7.4/fpm/php-fpm.conf

示例:

log_limit = 4096
log_buffering = yes

✅ 方案 4:找出“疯狂写日志”的代码

查看最近日志内容:

tail -n 100 /var/log/php/7.4/fpm/php-fpm.log

常见原因:

  • 死循环
  • 异常未捕获
  • 第三方 SDK 频繁报错

可用:

grep -c "PHP Warning" /var/log/php/7.4/fpm/php-fpm.log

四、如果是 Docker / LNMP 环境

  • Docker:
docker system prune -a

并限制容器 log:

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "50m",
    "max-file": "3"
  }
}

五、推荐组合方案 ✅

最稳妥做法:

  1. logrotate 自动切割
  2. error_reporting 降级
  3. 定期排查异常代码

如果你愿意,可以把:

  • Ubuntu 版本
  • PHP 版本
  • Web 服务(Nginx / Apache)
  • 日志路径

发给我,我可以帮你写一份精准的 logrotate 配置。

0 踩