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!
コメント