Laravel 5でサービスプロバイダが見つからなくなる場合の対処法
2017-11-10
既に稼働しているLaravelで開発されたWebシステムに修正を加えたとき、変更内容や構成によっては、サービスプロバイダが見つからない旨のエラーが出ることがあります。
そうなると、Webシステムがブラウザで正常に見れなくなるどころか、Laravelのコマンドラインインターフェースであるartisan
コマンドまで使えなくなります。
そうなった場合の対処法を記します。
現象
artisan
コマンドを実行すると、下記のようにサービスプロバイダが見つからない旨のエラーが出ます。
$ php artisan package:discover
[Symfony\Component\Debug\Exception\FatalThrowableError]
Class 'Example\Providers\ServiceProvider' not found
また、ブラウザでLaravelにアクセスすると、エラーとなり正常にアクセスできなくなります。デバッグモードを有効にしている場合は、同様のエラーメッセージが出力されます。
対処法
bootstrap/cache
ディレクトリ内にあるキャッシュファイルを削除します。
$ rm bootstrap/cache/*.php
rm: 通常ファイル `bootstrap/cache/config.php' を削除しますか? y
rm: 通常ファイル `bootstrap/cache/packages.php' を削除しますか? y
rm: 通常ファイル `bootstrap/cache/routes.php' を削除しますか? y
rm: 通常ファイル `bootstrap/cache/services.php' を削除しますか? y
artisan
コマンドが利用できるようになっていることを確認します。
$ php artisan
Laravel Framework 5.5.20
...
以上で完了です。
なお、キャッシュが消去されているので、利用する場合は作り直してください。
$ php artisan route:cache
$ php artisan config:cache