評価環境にデプロイする時、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クラスを探しに行っているが、ロールバックしたのでクラス定義ファイルはなくエラーになっているようだ。
composerのクラスマップがキャッシュされてしまっているのかと思い、composer clear-cacheに飛びつくが関係なかった。
再度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!
このエラーの間、画面にアクセスしても真っ白な状態だったのでこれが本番環境でなくてほんとに良かった。。