Ubuntu 上 PHP 日志太大,最常见的原因是 PHP-FPM 或 Apache/Nginx 的 PHP 错误日志在持续写入(尤其是重复错误、Warning、Notice)。可以按下面步骤排查和清理。
ls -lh /var/log/php*
常见路径:
/var/log/php8.1-fpm.log
/var/log/php8.2-fpm.log
/var/log/php7.4-fpm.log
grep -R "error_log" /etc/php/
常见路径:
/var/log/php_errors.log
/var/log/nginx/error.log
/var/log/apache2/error.log
❌ 不建议:
rm php.log
✅ 推荐方式(清空但保留文件):
sudo truncate -s 0 /var/log/php8.1-fpm.log
或:
sudo > /var/log/php8.1-fpm.log
Ubuntu 默认使用 logrotate,检查配置:
cat /etc/logrotate.d/php8.1-fpm
没有的话可以新建:
sudo nano /etc/logrotate.d/php-custom
示例(自动切割 + 压缩 + 保留 7 天):
/var/log/php*.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
create 0640 www-data adm
postrotate
systemctl reload php8.1-fpm > /dev/null 2>&1 || true
endscript
}
测试:
sudo logrotate -d /etc/logrotate.d/php-custom
编辑 php.ini:
sudo nano /etc/php/8.1/fpm/php.ini
推荐生产环境配置:
display_errors = Off
log_errors = On
error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED
error_log = /var/log/php_errors.log
⚠️ 不建议直接 log_errors = Off(会掩盖真实问题)
tail -n 1000 /var/log/php8.1-fpm.log | sort | uniq -c | sort -nr | head
✅ 解决方式:
set_error_handler() 控制日志# 清空日志
sudo truncate -s 0 /var/log/php*.log
# 重启 PHP-FPM
sudo systemctl restart php8.1-fpm
✅ 最推荐组合
logrotate 限制日志大小如果你愿意,可以把:
发给我,我可以帮你写一份 完全适合你服务器的最小配置方案 ✅