在 Ubuntu 上清空 PHP 日志的方法取决于你使用的 PHP 运行方式(PHP-FPM 还是 Apache mod_php),以及日志的存放位置。下面按常见情况说明。
先查一下日志通常放在哪里:
php -i | grep "error_log"
常见位置:
/var/log/php*/fpm.log 或 /var/log/php*-fpm.log/var/log/php_errors.log/var/log/apache2/error.log/var/log/nginx/error.logls /var/log/php*
例如:
/var/log/php8.2-fpm.log
✅ 安全、不会破坏文件句柄(推荐)
sudo truncate -s 0 /var/log/php8.2-fpm.log
或:
sudo > /var/log/php8.2-fpm.log
❌ 不推荐直接删除
sudo rm /var/log/php8.2-fpm.log
原因:PHP-FPM 仍持有文件句柄,删除后不会真正释放磁盘空间,也不会自动重建日志。
如果 php.ini 中设置了:
error_log = /var/log/php_errors.log
清空方式:
sudo truncate -s 0 /var/log/php_errors.log
sudo truncate -s 0 /var/log/apache2/error.log
sudo truncate -s 0 /var/log/nginx/error.log
清空日志后无需重启,但如果你想“确认生效”:
sudo systemctl restart php8.2-fpm
(版本号按实际情况)
不要手动清,最好交给系统:
sudo nano /etc/logrotate.d/php
示例:
/var/log/php*.log {
weekly
missingok
rotate 4
compress
notifempty
create 0640 www-data adm
}
df -h
如果删除日志后空间没释放,说明进程仍占用:
sudo lsof | grep deleted
重启对应服务即可。
如果你愿意,可以告诉我:
我可以给你精确到命令级别的方案。