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

筆者について

「もりやませーた」として活動している、フリーランスエンジニアです。1992年生まれ、神奈川県在住、既婚。

筆者のTwitterはこちら。記事に関するご意見等はTwitterの方へお寄せください。

その他業務に関するお問い合わせは、こちらのページをご覧ください。

PHP Laravel