PHP日志清理可通过四种方法实现:手动清空或删除日志文件应急;使用logrotate自动轮转、压缩并保留指定天数;编写Shell脚本配合cron定时清理过期日志;调整日志级别从源头减少日志量,适用于长期运维。
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。但注意,删除前最好确认一下文件内容,别误删了有用的日志。
手动清理终究不是长久之计。CentOS系统自带的 logrotate 工具就是干这个用的——自动轮转、压缩、删除,让日志文件不再无限膨胀。
sudo yum install logrotate,CentOS 8用 sudo dnf install logrotate。/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 强制执行一次。如果不想用logrotate,或者需要更灵活的清理策略,可以自己写个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
这样一来,老旧日志就会被自动清理,完全不用手动干预。
如果日志文件涨得飞快,很可能是因为日志级别设得太低,比如记录了大量的DEBUG信息。这时可以从配置层面下手,提高日志级别,只记录真正有用的信息。
/etc/php-fpm.d/www.conf),找到 error_log_level 参数,把值从 debug 改成 warning 或 error。这样只有警告级别及以上的日志才会被记录。sudo systemctl restart php-fpm。这招是从源头上控制日志产量,配合前面的清理策略,效果更佳。
侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述