Laravel artisan 寫入日誌的使用者和 fpm 不一致,導致無法寫入日誌問題

邢闖洋發表於2022-01-20

前言

當我們需要使用 artisan 命令列,或者使用 laravel 的定時任務,這個時候寫入日誌的使用者可能預設會屬於 root,但 php-fpm 一般都在 php-fpm.conf 檔案中指定了我們的使用者和使用者組屬於 www,這時候如果定時任務先寫入了日誌,我們在呼叫介面,那麼會報無法寫入的錯誤

UnexpectedValueException : The stream or file“/test.com/storage/logs/laravel-2020-04-27.log” could not be opened:failed to open stream: Permission denied

如何解決這個問題。

1. crontab 指定使用者執行指令碼

crontab -e -u www

2. 更改 laravel logging 日誌配置檔案

'command' => [
    'driver' => 'daily',
    'path' => storage_path('logs/command/command.log'),
    'days' => 7,
    // 給 command 寫入的日誌檔案賦予許可權,允許其它使用者也可寫入。
    'permission' => '0666'
],

參考文章

Laravel 日誌檔案許可權問題 | Laravel China 社群 (learnku.com)
laravel 修改日誌許可權

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章