Laravel が更新後に 'The bootstrap/cache directory must be present and writable' エラーを投げる。

私は 'composer update' を使い、いくつかのパッケージを更新しました。アップデートの間、ウェブサイトはまだ機能しています。しかし、 'The compiled services file has been removed' と表示された後、ウェブサイトはロードされず、代わりにこう表示されます。

Exception in ProviderRepository.php line 190:
The bootstrap/cache directory must be present and writable.

一番不思議なのは、 'composer update' を再度実行すると、コンパイルされたサービスファイルが削除されるまで、ウェブサイトが再び動き出し、その時点で再び同じエラーを投げます。このエラーが表示されたときに行うべき通常のこと(chown -R everything to the right user/group and chmod all the files and folders respectively 664 and 775)はすでに試しています。

このエラーは '正しくないようなので、もうどうしたらいいのかわかりません。

質問へのコメント (1)
ソリューション

composerのアップデートを実行した後に試してみてください。

php artisan cache:clear
解説 (3)

Laravelのディレクトリファイル上で、実行します。

sudo chmod -R 777 bootstrap/cache/
解説 (4)

Short version:AWS eb cli__ のようなものを使ってアップロードする場合 bootstrap/cache フォルダ (その中身についてではなく) がデプロイされているかどうかを確認する。


私の回答の背景にはいくつかの理由があります。 私は、Amazon Web Services' Elastic Beanstalkを使用して、Laravelプロジェクトをホストしています。私はLaravelを使い始めたばかりなので、その機能についてはあまり知りません。また、このような場合、「Skype」を利用すると便利です。

その日のうちに、私は自分が

 php artisan config:cache

を使用して設定をキャッシュし、高速化を図りました。そして、composer.json'の "post-install-cmd" と "post-update-cmd" 節に同じものを追加しました。 また、.ebignore ファイルに /bootstrap/cache の内容をアップロードしないように記述しました(その内容は環境依存なので a.k.a 私の localhost 設定は本番サーバでは意味がない)。

そして facepalm これが bootstrap/cache フォルダのアップロードを止めることになるとは気づきませんでした(git のように eb cli は空のフォルダを無視するのです)。
So, I started to deploy at night The deployments meant to crash.これは、私が夜にデプロイを始めたとき、デプロイはクラッシュすることになっていた。

ということで、今は_bootstrap/cache_に空のプレースホルダー(例えば) .gitkeep ファイルを置くだけにしています。そして、デプロイは再び動作しています :)
(問題があまりに単純だったので、EBSのEC2インスタンスをsshで掘って、何時間か甘い眠りについた後に原因に気付きました ~.~ )

解説 (2)

私は非高架モード(非管理者)のウィンドウ10でcmderを使用しています。 コマンドphp artisan cache:clearは私にはうまくいきませんでした。 フォルダーbootstrap / cacheは存在しませんでした。 フォルダを作成し、bootstrapフォルダとbootstrap / cacheフォルダの両方から読み取り専用を削除しました。 ComposerのインストールとComposerの更新の両方が機能しています。

解説 (0)
sudo chmod -R ug+rwx storage bootstrap/cache

うまくいけば、これで問題が解決します。

解説 (0)

プロジェクトフォルダで実行できます。

 sudo chmod -R 777 bootstrap/cache

走るより。

 composer update

走るより。

 cache:clear
解説 (1)

Webサーバーの場合(例:. Apache または Nginx )はフロントエンドとして使用されています。解決策は、Webサーバーグループが所有するディレクトリ「bootstrap / cache」を作成することです。 Nginx の場合:

 $ sudo chgrp -R nginx bootstrap/cache
解説 (0)