在 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
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'
sudo systemctl restart php7.4-fpm
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
编辑 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
编辑:
sudo nano /etc/php/7.4/fpm/php-fpm.conf
示例:
log_limit = 4096
log_buffering = yes
查看最近日志内容:
tail -n 100 /var/log/php/7.4/fpm/php-fpm.log
常见原因:
可用:
grep -c "PHP Warning" /var/log/php/7.4/fpm/php-fpm.log
docker system prune -a
并限制容器 log:
{
"log-driver": "json-file",
"log-opts": {
"max-size": "50m",
"max-file": "3"
}
}
最稳妥做法:
logrotate 自动切割error_reporting 降级如果你愿意,可以把:
发给我,我可以帮你写一份精准的 logrotate 配置。