🧰
[Laravel] 'There is no existing directory ...' の対策
published_at: 2019-05-28
だいぶハマったので把握したことを記事にします
環境
- Laravel 5.8
- PHP 7.3
- Docker version 18.09.2, build 6247962
- docker-compose version 1.23.2, build 1110ad01
現象
- ブラウザでLaravelアプリケーションのURL( http://localhost:8080 など )をリクエストしても期待の画面が表示されない
- 画面のないAPIリクエストでも想定の結果が返ってこない
- 以下のような例外メッセージが発生している [1]
throw new \UnexpectedValueException(sprintf('There is no existing directory at "%s" and its not buildable: '.$this->errorMessage, $dir)); There is no existing directory at ".../server/storage/logs" and its not buildable: Permission denied
-
php artisan cache:clear
実行時に以下
Failed to clear cache. Make sure you have the appropriate permissions.
のメッセージが出力されて失敗する (*)
対策
以下を実行したところ、現象が発生しなくなった
mkdir -p storage/framework/cache/data
chmod -R 777 storage
補足
- メッセージを見て、ネットで検索して出てくる情報から
-
chmod -R 777 storage
や -
chmod -R 777 bootstrap/cache/
をやってみたのだが、現象の解消には至らずだった。
-
解決の手がかりになった情報
-
Laravel 5.7 で php artisan cache:clear を叩くと Failed to clear cache. Make sure you have the appropriate permissions. になる。。
- きっかけは、上述「現象」の (*) のメッセージ
- [L5.7] Cache clear fails
Note
Twitterで相談に乗っていただいた @raki さんに感謝
Footnote
-
例外発生箇所はおそらく https://github.com/Seldaek/monolog/blob/master/src/Monolog/Handler/StreamHandler.php#L169 (2019/05/28 未明時点) ↩︎
Discussion