温馨提示×

ubuntu php日志过大咋办

小樊
47
2026-09-30 15:14:39
栏目: 编程语言

在 Ubuntu 上 PHP 日志过大,通常可以从 定位日志、清理、限制大小、轮转、优化代码 几个方面解决。


一、先找到 PHP 日志在哪

常见位置:

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

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

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

# PHP 自身 error_log
php --ini
# 查看 error_log 配置

查看 php.ini:

php --ini
grep error_log /etc/php/*/*/php.ini

二、临时清理(立刻见效)

# 清空日志(不删文件)
sudo truncate -s 0 /var/log/php-fpm.log
# 或
sudo echo > /var/log/php*/fpm/error.log

⚠️ 不要直接 rm,否则服务可能写不了日志。


三、使用 logrotate(推荐)

Ubuntu 默认有 logrotate,但 PHP 日志不一定配置好。

1. 检查是否已配置

ls /etc/logrotate.d/ | grep php

2. 手动添加配置

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

示例:

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

测试:

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

四、限制 PHP 日志内容(治本)

1. 关闭不必要的错误记录

display_errors = Off
log_errors = On
error_reporting = E_ERROR | E_WARNING

2. 限制单条日志大小(PHP 本身不支持,但可避免刷屏)

3. 修改 php.ini 后重启

sudo systemctl restart php-fpm

五、防止“疯狂写日志”

常见原因:

  • 死循环
  • 异常未捕获
  • 第三方库 bug
  • 爬虫/攻击

检查:

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

如果是重复错误:

  • 修代码
  • 加 try/catch
  • 用 Sentry / Monolog 限流

六、如果日志已经几十 GB

# 查看大小
du -sh /var/log/*

# 直接清空(紧急)
sudo truncate -s 0 /var/log/php-fpm.log

七、进阶方案(大流量)

  • 日志写入 rsyslog
  • 使用 Monolog + rotating handler
  • 日志发送到 ELK / Loki

如果你愿意,可以告诉我:

  • Ubuntu 版本
  • PHP 运行方式(Apache / Nginx + FPM)
  • 日志路径和大小

我可以给你精确配置。

0 踩