在 Ubuntu 上,PHP 日志过大通常来自 php-fpm 或 cli 的错误日志。下面按「定位 → 清理 → 限制 → 长期方案」给你一套实用处理方式。
php --ini
常见位置:
/etc/php/8.1/fpm/php.ini/etc/php/8.1/cli/php.inigrep -R "error_log" /etc/php/
常见日志文件:
/var/log/php/php-fpm.log/var/log/php7.4-fpm.log/var/log/php8.1-fpm.logstorage/logs/laravel.log 等)# 只清空,不删文件(推荐)
sudo truncate -s 0 /var/log/php/php-fpm.log
或
sudo echo > /var/log/php/php-fpm.log
⚠️ 不要直接 rm,可能导致 PHP 仍在写已删除文件,空间不释放。
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
编辑 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
如果是框架日志:
storage/logs/laravel.log
✅ 使用框架日志轮转或:
php artisan config:cache
并设置:
LOG_CHANNEL=daily
✅ 开启 logrotate
✅ 不在生产记录 E_NOTICE
✅ 定期监控:
du -sh /var/log/php
✅ 必要时接入:
rsyslogjournald如果你愿意,可以告诉我:
php-fpm 还是 cli我可以直接帮你写一份可用的 logrotate 配置。