git pullコマンドを実行したらvendorのファイルが開けなくなってエラー(Failed opening required)

仕事でLaravelを触っているときにgit pullコマンドを実行したらエラー画面になってしまって、ハマってしまいました。

もしかして、僕みたいに困っている人が1000人に1人はいるかもしれないので、情報共有しておこうと思います。

今回は特に自分の備忘録としてエントリーするので、殴り書きみたいに書きます。あしからず。

 

問題

git pullコマンドを実行すると、エラー画面になる(Failed opening required ***)

エラー内容を確認すると、/vendorフォルダ以下に本来あるべきファイルがないらしい。

再度、composer installcomposer update コマンドを実行してもエラー画面が消えない。

Failed opening required '/project/vendor/autoload.php' とか表示され、さらに他のファイルがないとか言われて状況がより悪化。

また、他のブランチ(問題のなかったブランチ)にチェックアウトしても同じエラー。

一応、composer dump-autoload を実行してみたが、意味なし。

 

原因

間違った(古い)ブランチにチェックアウト。その後、git pullコマンドを実行したときに古い composer.lock をダウンロードしたのが問題(?)

記憶にないのだが、このあと composer install コマンドを実行して/vendorの構成が変わった(?)可能性が高い。

問題のなかったブランチにチェックアウトしても同じエラーが表示されるのは、基本的に/vendorフォルダはGitの管理下に置かれていないため、ブランチを切り替えても/vendorフォルダの中身が変わらないから?

 

解決策

composer.lockgit pull コマンドする前の状態に戻してから composer installコマンドを実行するとエラーが消えました。

composer install コマンドは composer.lock の内容を基に/vendorフォルダ以下の内容を構成します。

 

まとめ

基本的に/vendorフォルダは個々の環境に依存してGitの管理下に置かれないため、このようなエラーの原因となるらしいです。

git pull コマンドを実行して、/vendorの中の何かファイルがない(Failed opening required ***)と言われたら、正常なときのcomposer.lockに戻してcomposer installコマンドを実行すると、上手くいくかもしれません。

 
以上、個人的なメモでした。

本庄マサノリ

仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら

>> Twitter をフォローする

 

-実践知識

おすすめ記事

動画で学習するなら ドットインストール、Schoo、Udemyのどれがいい?

フリーランスを目指すなら フリーランスエージェントTOP3