温馨提示×

CentOS PHP日志清理工具有哪些

小樊
44
2025-11-10 01:19:09
栏目: 编程语言

1. logrotate(系统自带核心工具)
logrotate是CentOS系统预装的日志管理工具,专门用于实现日志的自动轮转、压缩、删除及通知。通过自定义配置文件,可针对PHP日志(如PHP-FPM、Apache/Nginx的PHP错误日志)设置轮转规则(如每日轮转、保留7天、压缩旧日志)。配置文件通常位于/etc/logrotate.d/目录下(如php-fpm.conf),配置示例如下:

/var/log/php-fpm/*.log {
    daily
    missingok
    rotate 7
    compress
    notifempty
    create 640 root adm
}

该配置表示每日轮转PHP-FPM日志,保留最近7个压缩文件,仅在日志非空时执行。测试配置有效性可使用sudo logrotate -f /etc/logrotate.d/php-fpm命令,系统会自动应用规则。

2. 手动清理命令(临时应急工具)
通过Shell命令可快速清理PHP日志,适用于临时释放磁盘空间:

  • 删除指定日志文件:使用rm命令(需root权限),如sudo rm -f /var/log/php-fpm/error.log(替换为实际日志路径);
  • 清空日志文件内容:使用truncate命令,保留文件但清空内容(不影响正在写入的进程),如sudo truncate -s 0 /var/log/php-fpm/*.log(清空所有PHP-FPM日志);
  • 查找并清理老旧日志:结合find命令按时间/大小筛选,如find /var/log -type f -name "*.log" -mtime +30 -exec rm -f {} \;(删除30天前的.log文件)或find /var/log -type f -name "*.log" -size +50M -exec truncate -s 0 {} \;(清空超过50MB的日志文件)。

3. 定时任务(Cron)(自动化执行工具)
通过cron设置定时任务,可实现日志清理的自动化。例如,创建/path/to/log_cleanup.sh脚本,内容为find /var/log/php-fpm/*.log -mtime +7 -exec rm -f {} \;(删除7天前的PHP-FPM日志),然后赋予执行权限chmod +x /path/to/log_cleanup.sh,最后在crontab -e中添加0 3 * * * /path/to/log_cleanup.sh(每日凌晨3点执行)。也可将logrotate加入cron(默认已配置),确保日志轮转自动运行。

4. PHP代码清理(应用层工具)
若PHP应用将日志写入自定义文件(如/var/log/myapp.log),可通过PHP代码实现日志清理。例如,使用unlink()删除文件或file_put_contents()清空内容:

$logFile = '/var/log/myapp.log';
if (file_exists($logFile)) {
    unlink($logFile); // 删除日志文件
    // 或使用 file_put_contents($logFile, ''); // 清空日志内容
}

然后通过cron定期执行该脚本(如0 1 * * * /usr/bin/php /path/to/cleanup.php),实现应用层日志的自动清理。

0