溫馨提示×

如何配置PHP日志輪轉

小樊
54
2025-07-08 18:04:08
欄目: 編程語言

配置PHP日志輪轉可以通過多種方式實現,具體取決于你的操作系統和PHP的配置方式。以下是一些常見的方法:

方法一:使用 logrotate 工具(適用于Linux系統)

logrotate 是一個用于管理日志文件的工具,可以自動輪轉、壓縮和刪除舊日志文件。以下是如何配置 logrotate 來管理PHP日志文件的步驟:

  1. 創建或編輯 logrotate 配置文件: 通常,logrotate 的配置文件位于 /etc/logrotate.d/ 目錄下。你可以創建一個新的配置文件或編輯現有的文件。

    sudo nano /etc/logrotate.d/php-fpm
    
  2. 添加配置內容: 在文件中添加以下內容,根據你的實際情況調整路徑和選項:

    /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。
  3. 測試配置: 你可以手動測試 logrotate 配置是否正確:

    sudo logrotate -f /etc/logrotate.d/php-fpm
    

方法二:使用 cron 定時任務

如果你不想使用 logrotate,也可以通過 cron 定時任務來手動輪轉日志文件。

  1. 編輯 cron 任務: 打開當前用戶的 crontab 文件:

    crontab -e
    
  2. 添加定時任務: 添加以下行來每天午夜輪轉日志文件:

    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,可以在 php-fpm.confwww.conf 文件中配置日志輪轉。

  1. 編輯配置文件: 打開 php-fpm.confwww.conf 文件:

    sudo nano /etc/php/7.x/fpm/pool.d/www.conf
    
  2. 添加或修改日志輪轉配置: 找到以下行并添加或修改:

    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: 日志輪轉的時間間隔。
  3. 重啟PHP-FPM服務: 保存文件并重啟PHP-FPM服務:

    sudo systemctl restart php7.x-fpm
    

通過以上方法,你可以有效地配置PHP日志輪轉,確保日志文件不會無限增長,同時保留足夠的歷史記錄。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女