テスト環境にデプロイする時、gitからソースコードをチェックアウトしキャッシュファイルを作成していた。
$ git pull --no-ff --no-edit origin develop/1.0
$ php artisan config:cache
ただロールバックする必要があったので、一度マージ前のコミットに戻ってキャッシュファイルを再生成した所、エラーが出た。
$ git reset --hard HEAD^
$ php artisan config:cache
In ProviderRepository.php line 208:
Class 'App\Providers\TestServiceProvider' not found
最初にチェックアウトしたコードに含まれるTestSerciveProviderクラスを探しに行っているが、ロールバックしたのでクラス定義ファイルはなくエラーになっているようだ。
キャッシュファイルが悪さしているだろうと思い、 artisan config:clear
や composer clear-cache
を実行するが解消しなかった。
composer dump-autoload
し直すも状況は変わらず。
$ composer dump-autoload
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover
In ProviderRepository.php line 208:
Class 'App\Providers\TestServiceProvider' not found
Script @php artisan package:discover handling the post-autoload-dump event returned with error code 1
$ php artisan config:cache
In ProviderRepository.php line 208:
Class 'App\Providers\TestServiceProvider' not found
色々ネットで調べてもいまいち原因が分からず10分ほど経過した頃、TestServiceProviderクラスの読み込みは確かconfig/app.php に記載してたなーと思っていたら原因に気づいた。
php artisan config:cache
した時に生成していた bootstrap/cache 以下のキャッシュファイルに今はもう存在しないクラスが記載されていて、これを消したり再生成したりしようにも artisan コマンドが最初にこのファイルを読みに行ってエラーになっていたようなので手動で削除したところ、問題なくキャッシュし直す事ができ、無事解決!
$ php artisan config:cache
Configuration cache cleared!
Configuration cached successfully!