Laravel 日誌檔案許可權問題

chuoke發表於2021-05-14

Laravel 日誌通道設定為 singledaily 時,會將日誌寫入到檔案,但是 命令列和 FPM 這兩個模式執行的使用者可能不是同一個(通常是 root 和 www),外加檔案的預設許可權是 0644,也就是 rw-r--r--,所以檔案建立後,其它使用者是沒許可權寫入的,這可能會導致程式在需要寫入日誌而出現對檔案沒有操作許可權時,發生嚴重錯誤而崩潰。

解決此問題的方法,一是讓命令列和 FPM 執行在同一個使用者下,二是修改檔案許可權。

方法一對於我們普通開發者而言,有點麻煩,而方法二就相當簡單,只需要修改檔案的預設許可權即可,並且 Laravel 也給與了方便的設定項 permission,具體如下:

'daily' => [
        'driver' => 'daily',
        'path' => storage_path('logs/laravel.log'),
        'level' => 'debug',
        'days' => 7,
        'permission' => 0664,
    ],

0664,即 rw-rw-r--,允許同組其它使用者也可以寫入。
如果 0664 還不夠,就再加到 0666,允許其它使用者也可寫入。

另外,在這之前,應該保證 storage 資料夾的許可權已經按照 Laravel 的提示進行設定。

日誌 |《Laravel 8 中文文件 8.x》| Laravel China 社群

Laravel daily log created with wrong permissions - Stack Overflow

How to configure PHP CLI on linux ubuntu to run as www-data? - Server Fault

本作品採用《CC 協議》,轉載必須註明作者和本文連結
初出茅廬,一知半解,望有識之士多多賜教。

相關文章