配置PHP日志輪轉可以通過多種方式實現,具體取決于你的操作系統和PHP的配置方式。以下是一些常見的方法:
logrotate
工具(適用于Linux系統)logrotate
是一個用于管理日志文件的工具,可以自動輪轉、壓縮和刪除舊日志文件。以下是如何配置 logrotate
來管理PHP日志文件的步驟:
創建或編輯 logrotate
配置文件:
通常,logrotate
的配置文件位于 /etc/logrotate.d/
目錄下。你可以創建一個新的配置文件或編輯現有的文件。
sudo nano /etc/logrotate.d/php-fpm
添加配置內容: 在文件中添加以下內容,根據你的實際情況調整路徑和選項:
/var/log/php-fpm/*.log {
daily
missingok
rotate 7
compress
notifempty
create 640 root adm
}
解釋:
daily
: 每天輪轉一次日志文件。missingok
: 如果日志文件不存在,不會報錯。rotate 7
: 保留7個輪轉的日志文件。compress
: 壓縮舊的日志文件。notifempty
: 如果日志文件為空,不進行輪轉。create 640 root adm
: 創建新的日志文件,權限為640,屬主為root,屬組為adm。測試配置:
你可以手動測試 logrotate
配置是否正確:
sudo logrotate -f /etc/logrotate.d/php-fpm
cron
定時任務如果你不想使用 logrotate
,也可以通過 cron
定時任務來手動輪轉日志文件。
編輯 cron
任務:
打開當前用戶的 crontab
文件:
crontab -e
添加定時任務: 添加以下行來每天午夜輪轉日志文件:
0 0 * * * /usr/bin/find /var/log/php-fpm/*.log -type f -name "*.log" -exec gzip {} \; && /usr/bin/find /var/log/php-fpm/ -type f -name "*.log.gz" -exec mv {} {}.1 \; && touch /var/log/php-fpm/access.log
解釋:
0 0 * * *
: 每天午夜執行。/usr/bin/find /var/log/php-fpm/*.log -type f -name "*.log" -exec gzip {} \;
: 壓縮所有 .log
文件。/usr/bin/find /var/log/php-fpm/ -type f -name "*.log.gz" -exec mv {} {}.1 \;
: 將壓縮后的文件重命名為 .1
。touch /var/log/php-fpm/access.log
: 創建一個新的空日志文件。如果你使用的是PHP-FPM,可以在 php-fpm.conf
或 www.conf
文件中配置日志輪轉。
編輯配置文件:
打開 php-fpm.conf
或 www.conf
文件:
sudo nano /etc/php/7.x/fpm/pool.d/www.conf
添加或修改日志輪轉配置: 找到以下行并添加或修改:
catch_workers_output = yes
php_admin_value[error_log] = /var/log/php-fpm/error.log
php_admin_flag[log_errors] = on
php_admin_value[memory_limit] = 32M
php_admin_value[max_execution_time] = 60
php_admin_value[date.timezone] = UTC
然后添加日志輪轉配置:
php_admin_value[error_log] = /var/log/php-fpm/error.log
php_admin_flag[log_errors] = on
php_admin_value[memory_limit] = 32M
php_admin_value[max_execution_time] = 60
php_admin_value[date.timezone] = UTC
php_admin_value[log_rotations_max] = 7
php_admin_value[log_rotation_time] = daily
解釋:
log_rotations_max
: 保留的日志文件數量。log_rotation_time
: 日志輪轉的時間間隔。重啟PHP-FPM服務: 保存文件并重啟PHP-FPM服務:
sudo systemctl restart php7.x-fpm
通過以上方法,你可以有效地配置PHP日志輪轉,確保日志文件不會無限增長,同時保留足夠的歷史記錄。