手动清理PHP日志
手动清理是最直接的日志管理方式,适用于临时释放磁盘空间的场景。首先需要定位PHP日志文件的位置,常见路径包括/var/log/php/、/var/log/php-fpm/(PHP-FPM服务)、/var/log/httpd/(Apache服务)或/var/log/nginx/(Nginx服务)。可以使用find命令快速查找所有.log后缀的PHP日志文件:sudo find / -type f -name "*.log" | grep php。
找到目标文件后,清空内容(保留文件本身,避免影响服务运行)可使用truncate命令,例如sudo truncate -s 0 /var/log/php-fpm/error.log;若需彻底删除旧日志,可使用rm命令,例如sudo rm -f /var/log/php/*.log。操作前建议确认文件内容,避免误删重要日志。
使用logrotate自动轮转日志
logrotate是CentOS系统自带的日志管理工具,可实现日志的自动轮转、压缩、删除,避免日志文件无限增长。
sudo yum install logrotate(CentOS 7)或sudo dnf install logrotate(CentOS 8)安装。/etc/logrotate.d/目录下创建针对PHP的服务配置文件(如php-fpm),内容示例如下:/var/log/php-fpm/*.log {
daily # 每天轮转一次
missingok # 日志文件不存在时不报错
rotate 7 # 保留最近7天的日志
compress # 压缩旧日志(节省空间)
notifempty # 日志为空时不轮转
create 640 root adm # 创建新日志文件,权限640,属主root,属组adm
}
若使用Apache/Nginx,可修改对应的httpd/nginx配置文件,调整路径为对应的PHP日志路径。sudo logrotate -d /etc/logrotate.d/php-fpm命令模拟轮转过程,检查配置是否正确;若需立即应用配置,可使用sudo logrotate -f /etc/logrotate.d/php-fpm强制执行。定期清理脚本+定时任务
通过编写Shell脚本结合cron定时任务,可实现定期自动清理老旧日志(如30天以上)。
/usr/local/bin/clean_php_logs.sh,内容如下:#!/bin/bash
# 清空PHP-FPM日志
find /var/log/php-fpm/ -type f -name "*.log" -exec truncate -s 0 {} \;
# 删除30天前的Apache错误日志
find /var/log/httpd/ -type f -name "error_log" -mtime +30 -exec rm -f {} \;
# 删除30天前的Nginx错误日志
find /var/log/nginx/ -type f -name "error.log" -mtime +30 -exec rm -f {} \;
sudo chmod +x /usr/local/bin/clean_php_logs.sh。crontab -e),添加以下内容(每天凌晨3点执行):0 3 * * * /usr/local/bin/clean_php_logs.sh
这样可定期自动清理老旧日志,无需手动干预。调整PHP日志级别减少日志量
若日志文件过大是由于日志级别设置过低(如记录了过多DEBUG信息),可通过调整PHP配置提高日志级别,减少不必要的日志记录。
/etc/php-fpm.d/www.conf),找到error_log_level参数,将其值从debug调整为warning或error(仅记录警告及以上级别的日志)。sudo systemctl restart php-fpm。