こんにちは、かずかずです。
今回は composer install でエラーが起きてしまう、どうもうまくいかない人向けの記事です。
仕事で開発環境を構築していた際に起きた事象について、解決策が調べても出てこなかったので記事にしました。
目次
- 起きた事象
- composer installとは何をしているのか
- 想定原因1: composer.jsonが間違っている
- 想定原因2: キャッシュが悪さをしている
- 想定原因3: もはやお手上げ ?最終手段
- おわりに
起きた事象
ローカル開発環境の構築している時にcomposer installを実行すると以下のエラーメッセージが出てきてしまいました。
In aws.php line 26: Class 'Aws\Laravel\AwsServiceProvider' not found
上記には書いていないですが、migrationをしている最中に起きてしまったエラーのようです。AwsServiceProviderなるものが見つからないと怒られています。
composer installとは何をしているのか
プロジェクト直下ディレクトリにあるcomposer.jsonの内容に従って、記載されているライブラリを記載されているバージョンで、インストールするコマンドになります。
インストールしたライブラリは プロジェクト直下のvendorディレクトリに保存されて行きます。vendorディレクトリが存在しない場合は、生成されます。
想定原因1: composer.jsonが間違っている
さて上記の事象では、「AwsServiceProviderが無い」と言っています。一番分かりやすい原因はcomposer.jsonの記載内容が間違っていることでしょう。
ライブラリ名やバージョンなど、記載内容をしっかり確認したうえで、もう一度実行してみましょう。
想定原因2: キャッシュが悪さをしている
それでも上手くいかない場合は、キャッシュが原因の可能性があります。
composer installは効率化を図るため、実行させるたびにキャッシュが保存され、何をインストールするのかキャッシュを参照して実行していきます。
以下のコマンドを実行する、もしくはキャッシュファイルそのものを削除してから、再度composer installを実行しましょう。
>php artisan cache:clear; >php artisan config:clear; >php artisan route:clear; >php artisan view:clear;
想定原因3: もはやお手上げ ?最終手段
ここまで来たら力技ですが、vendorディレクトリが存在する場合はvendorディレクトリを削除してしましましょう!
削除するというのは少し怖いかもしれませんが、前記したようにvendorディレクトリはcomposer installするたびに生成されるので大丈夫です。思いっきり削除してください。
composer installの仕様なのか、vendorディレクトリが存在していると、ライブラリの内容が少しおかしくても、無視してしまうようです。
※ここの原因については、composerの仕組み等々知りたいので、有識者の方からコメント等いただけるととうれしいです。
おわりに
以上となります。自分は上記の「最終手段」にて一応は解決でき、ちゃんと開発環境の構築ができました。
本記事がどなたかのお役に立てれば嬉しいです。