清理Ubuntu系统中的PHP过期日志可通过手动清理、**日志轮转工具(logrotate)或定时任务(Cron)**实现,以下是具体步骤:
PHP日志的位置取决于Web服务器类型和PHP运行模式:
/var/log/apache2/目录,主要文件为access.log(访问日志)和error.log(错误日志)。/var/log/nginx/目录,主要文件为access.log和error.log。/var/log/php/或/var/log/php-fpm/目录,主要文件为php-fpm.log(或类似名称,如php7.4-fpm.log)。可通过ls /var/log/apache2/、ls /var/log/nginx/或ls /var/log/php/命令确认日志文件是否存在。
若需立即清理日志,可使用以下命令:
truncate命令将日志文件大小截断为0字节,适用于需要保留文件结构但不想删除内容的场景。
sudo truncate -s 0 /var/log/apache2/*.log(清空所有Apache日志)sudo truncate -s 0 /var/log/nginx/*.log(清空所有Nginx日志)sudo truncate -s 0 /var/log/php/*.log(清空所有PHP-FPM日志)rm命令删除,但需注意备份重要信息。
sudo rm /var/log/apache2/access.log(删除Apache访问日志)sudo systemctl restart apache2sudo systemctl restart nginxsudo systemctl restart php-fpmlogrotate是Ubuntu系统自带的日志管理工具,可实现定期轮转、压缩、删除过期日志,避免手动操作。
/etc/logrotate.d/目录,如Apache的/etc/logrotate.d/apache2、Nginx的/etc/logrotate.d/nginx。sudo nano /etc/logrotate.d/php-fpm,添加以下内容(以PHP-FPM为例):/var/log/php/*.log {
daily # 每天轮转一次
missingok # 若日志文件不存在也不报错
rotate 7 # 保留最近7天的日志
compress # 压缩旧日志(如.gz格式)
delaycompress # 延迟压缩(保留最近1天的未压缩日志)
notifempty # 若日志为空则不轮转
create 0640 www-data adm # 创建新日志文件的权限和属主(根据实际情况调整,如Apache为root/adm)
sharedscripts # 所有日志轮转完成后执行脚本
postrotate
if [ -f /run/php/php7.4-fpm.pid ]; then # 根据PHP版本调整PID文件路径
kill -USR2 `cat /run/php/php7.4-fpm.pid` # 重启PHP-FPM服务以重新打开日志文件
fi
endscript
}
sudo logrotate -f /etc/logrotate.d/php-fpm(-f表示强制轮转),检查/var/log/php/目录是否生成压缩后的旧日志(如php-fpm.log.1.gz)。若需定期自动清理日志,可通过cron定时执行truncate或logrotate命令。
crontab -e,添加以下内容(以每天凌晨1点清理Apache日志为例):0 1 * * * /usr/bin/truncate -s 0 /var/log/apache2/*.log
或使用logrotate(需指定配置文件):0 1 * * * /usr/sbin/logrotate /etc/logrotate.d/apache2
Ctrl+O保存文件,Ctrl+X退出编辑器。cron会自动加载新任务,按设定时间执行清理。rotate参数(如保留7天或30天)和压缩设置(如compress)。