Laravel 日誌通道設定為 single
或 daily
時,會將日誌寫入到檔案,但是 命令列和 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 daily log created with wrong permissions - Stack Overflow
How to configure PHP CLI on linux ubuntu to run as www-data? - Server Fault
本作品採用《CC 協議》,轉載必須註明作者和本文連結