【Laravel7】There is no existing directory at "storage/logs" and its not buildable: Permission denied


環境

  • PHP 7.4.4
  • Laravel 7.5.1

エラー

There is no existing directory at "/work/backend/storage/logs" and its not buildable: Permission denied
in /work/backend/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php (line 171)
in /work/backend/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php -> createDir (line 99)
in /work/backend/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php -> write (line 42)
in /work/backend/vendor/monolog/monolog/src/Monolog/Logger.php -> handle (line 323)
in /work/backend/vendor/monolog/monolog/src/Monolog/Logger.php -> addRecord (line 541)
in /work/backend/vendor/laravel/framework/src/Illuminate/Log/Logger.php -> error (line 174)
in /work/backend/vendor/laravel/framework/src/Illuminate/Log/Logger.php -> writeLog (line 87)
in /work/backend/vendor/laravel/framework/src/Illuminate/Log/LogManager.php -> error (line 547)
in /work/backend/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php -> error (line 122)

原因

storage ディレクトリに書き込み権限がないため。

対策1

$ php artisan config:clear

対策2

$ chmod -R 775 storage bootstrap/cache

The stream or file "storage/logs/laravel.log" could not be opened: failed to open stream: Permission denied エラーが出たときの対処法 こちらと同様にパーミッションの場合もあります。

storagebootstrap/cache の2つのディレクトリは書き込み権限を付与してあげる。