温馨提示×

ubuntu php日志过大怎么处理

小樊
37
2026-09-15 16:06:24
栏目: 编程语言

在 Ubuntu 上,PHP 日志过大通常来自 php-fpm 或 cli 的错误日志。下面按「定位 → 清理 → 限制 → 长期方案」给你一套实用处理方式。


一、先找到 PHP 日志在哪

1. 查看 PHP 配置

php --ini

常见位置:

  • /etc/php/8.1/fpm/php.ini
  • /etc/php/8.1/cli/php.ini

2. 查看日志路径

grep -R "error_log" /etc/php/

常见日志文件:

  • /var/log/php/php-fpm.log
  • /var/log/php7.4-fpm.log
  • /var/log/php8.1-fpm.log
  • 应用自身(storage/logs/laravel.log 等)

二、临时清理(立即生效)

# 只清空,不删文件(推荐)
sudo truncate -s 0 /var/log/php/php-fpm.log

或

sudo echo > /var/log/php/php-fpm.log

⚠️ 不要直接 rm,可能导致 PHP 仍在写已删除文件,空间不释放。


三、限制 PHP 日志大小(推荐)

1. php-fpm 日志轮转(最常用)

Ubuntu 默认使用 logrotate:

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

示例配置:

/var/log/php/*.log {
    daily
    missingok
    rotate 14
    compress
    delaycompress
    notifempty
    create 0640 www-data adm
    sharedscripts
    postrotate
        systemctl reload php8.1-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:

log_errors = On
error_log = /var/log/php/php_errors.log

; 不记录通知和警告(减少日志量)
error_reporting = E_ERROR | E_PARSE

重载 PHP:

sudo systemctl restart php8.1-fpm

四、应用层日志过大(如 Laravel)

如果是框架日志:

storage/logs/laravel.log

✅ 使用框架日志轮转或:

php artisan config:cache

并设置:

LOG_CHANNEL=daily

五、长期最佳实践

✅ 开启 logrotate
✅ 不在生产记录 E_NOTICE
✅ 定期监控:

du -sh /var/log/php

✅ 必要时接入:

  • rsyslog
  • journald
  • 集中日志(ELK / Loki)

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

  • PHP 版本(7.4 / 8.1 / 8.2)
  • 是 php-fpm 还是 cli
  • 日志路径或文件名

我可以直接帮你写一份可用的 logrotate 配置。

0 踩