【Laravel】ServiceProvider not foundになった時に確認すること

プログラミング

Laravelで下記のようなエラーで怒られたことはありませんか?

Class "App\Providers\HogeServiceProvider" not found

今回はサービスプロバイダーのキャッシュについてハマったときの解決方法についてまとめます。

今回は下記記事の実装時に出会ったエラーです。

やったこと

やったこととしてはGitを使ってサービスプロバイダーを作成するためのブランチを切ります。

その作業ブランチでサービスプロバイダーを作成し、config/app.phpに登録を行います。

一旦コミットして元いたブランチに戻ると冒頭のエラーが出現しました。

試したこと

  • php artisan config:cache
root@075a1b192031:/work/backend# php artisan config:cache

   Error

  Class "App\Providers\ViewServiceProvider" not found

  at vendor/laravel/framework/src/Illuminate/Foundation/Application.php:690
    686|      * @return \Illuminate\Support\ServiceProvider
    687|      */
    688|     public function resolveProvider($provider)
    689|     {
  > 690|         return new $provider($this);
    691|     }
    692|
    693|     /**
    694|      * Mark the given provider as registered.

      +7 vendor frames
  8   artisan:37
      Illuminate\Foundation\Console\Kernel::handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))

configファイルを触ったのでキャッシュが残っているのかと思い、キャッシュクリアするコマンドを実行しましたが、また同じエラーが出ました。

  • composer dump-autoload
root@075a1b192031:/work/backend# composer dump-autoload
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi

In ProviderRepository.php line 208:

  Class "App\Providers\ViewServiceProvider" not found

新しいファイルを作成したのでオートロードしたコマンドを実行しましたが、またしてもそんなサービスプロバイダーはないと怒られました。

キャッシュ系の問題は大体この2つで解決することが多いのですが今回はそうはいきませんでした。

解決策

bootstrap/cache/配下をすべて消す

手動で消してもいいですし、rmコマンドで消しても一掃しても大丈夫です。

これで解決しました。

ここにキャッシュが残っていたわけですね。

再度キャッシュクリアコマンドを実行してみるとエラーなく実行されました。

root@075a1b192031:/work/backend# php artisan config:cache
Configuration cache cleared!
Configuration cached successfully!

コメント

タイトルとURLをコピーしました