當CentOS系統中PHP日志文件過大(如PHP-FPM日志、PHP錯誤日志)時,可通過以下方法快速解決及預防:
若日志文件已占滿磁盤空間,需先緊急清空日志。常用命令如下:
/var/log/php-fpm.log
):sudo truncate -s 0 /var/log/php-fpm.log
此命令將文件大小置為0,保留文件但無內容,不會影響正在運行的服務。.log
文件):find /var/log/php-fpm -type f -name "*.log" -mtime +7 -exec rm {} \;
可自定義-mtime +7
(7天前)為所需時間范圍,避免誤刪近期日志。使用logrotate
工具(CentOS默認安裝)自動管理日志的輪轉、壓縮和刪除,避免日志無限增長。
/etc/logrotate.d/php
文件,添加以下內容(以PHP-FPM為例):/var/log/php-fpm/*.log {
daily # 每天輪轉一次(可根據需求改為weekly/monthly)
missingok # 日志文件不存在時不報錯
rotate 7 # 保留最近7個輪轉文件
compress # 壓縮舊日志(節省空間)
notifempty # 日志為空時不輪轉
create 0640 root adm # 新日志文件權限及屬主屬組
sharedscripts # 所有日志輪轉完成后執行腳本
postrotate # 輪轉后重啟PHP-FPM以重新打開日志文件
if [ -f /var/run/php-fpm/php-fpm.pid ]; then
kill -USR2 $(cat /var/run/php-fpm/php-fpm.pid)
fi
endscript
}
sudo logrotate -f /etc/logrotate.d/php
配置生效后,logrotate
會按設定規則自動處理日志,無需手動干預。過低的日志級別(如debug
)會記錄大量無關信息(如notice、warning),增加日志體積。需將級別調整為更高級別:
/etc/php-fpm.d/www.conf
):error_log_level
參數,將其設置為warning
或error
(僅記錄重要錯誤):error_log_level = warning
error_reporting
參數,調整錯誤報告級別(如排除notice
):error_reporting = E_ALL & ~E_NOTICE
修改后重啟PHP-FPM使配置生效:sudo systemctl restart php-fpm
部分應用程序可能因未處理的異常、循環日志或調試語句導致日志暴增。需:
error_log()
函數調用,或通過配置文件禁用特定模塊的日志(如框架的debug模式)。通過cron
定時任務定期執行清理或輪轉操作,避免人工遺漏:
/etc/cron.daily/clear-php-logs
):#!/bin/bash
truncate -s 0 /var/log/php-fpm.log
sudo chmod +x /etc/cron.daily/clear-php-logs
此腳本會在每天凌晨自動清空PHP日志文件,適合不需要保留歷史日志的場景。通過以上方法組合使用,可有效解決CentOS下PHP日志滿的問題,并建立長期預防機制。需根據實際環境調整配置(如日志路徑、保留天數),確保不影響業務正常運行。