【Laravel】ルートが解決出来ないエラーの対処法

2020年になりましたね。
今年も皆さんに良い年でありますように。

さて、
複数人でサービスを運用していると、別の方の作業をマージした事で新しい問題が発覚するケースがあります。
その場合、過去の変更前に戻して環境を戻して原因究明をする事もあります。

新しくページを変更したりURLを変更している場合は、Laravelのルートも変わります。
今回はルートを変更した事で発生しうるエラー内容と、その対処方法について触れます。

事象

プログラムのソースはGitで管理しているのですが、コミットを戻してページにアクセスした所下記のようなエラーが出ました。

Erroneous data format for unserializing 'Symfony\Component\Routing\CompiledRoute'

エラーを見る限り問題はルート設定のエラーのようです。

スケジューラー実行時のログ

バッチファイルを叩く処理のログでは下記のような表示があります。

In routes.php line 15:

Erroneous data format for unserializing 'Symfony\Component\Routing\Compiled
Route'

laravel-logの記録

[2020-01-07 00:09:06] local.ERROR: Erroneous data format for unserializing 'Symfony\Component\Routing\CompiledRoute' {"exception":"[object] (ErrorException(code: 0): Erroneous data format for unserializing 'Symfony\\Component\\Routing\\CompiledRoute' at /var/www/bootstrap/cache/routes.php:15)
[stacktrace]
#0 [internal function]: Illuminate\\Foundation\\Bootstrap\\HandleExceptions->handleError(2, 'Erroneous data ...', '/var/www/bootst...', 15, Array)
#1 /var/www/bootstrap/cache/routes.php(15): unserialize('O:34:\"Illuminat...')
#2 /var/www/vendor/laravel/framework/src/Illuminate/Foundation/Support/Providers/RouteServiceProvider.php(75): require('/var/www/bootst...')
#3 [internal function]: Illuminate\\Foundation\\Support\\Providers\\RouteServiceProvider->Illuminate\\Foundation\\Support\\Providers\\{closure}(Object(Illuminate\\Foundation\\Application))
#4 /var/www/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(866): call_user_func(Object(Closure), Object(Illuminate\\Foundation\\Application))
#5 /var/www/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(815): Illuminate\\Foundation\\Application->fireAppCallbacks(Array)
#6 /var/www/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/BootProviders.php(17): Illuminate\\Foundation\\Application->boot()
#7 /var/www/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(210): Illuminate\\Foundation\\Bootstrap\\BootProviders->bootstrap(Object(Illuminate\\Foundation\\Application))
#8 /var/www/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(322): Illuminate\\Foundation\\Application->bootstrapWith(Array)
#9 /var/www/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(131): Illuminate\\Foundation\\Console\\Kernel->bootstrap()
#10 /var/www/artisan(37): Illuminate\\Foundation\\Console\\Kernel->handle(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#11 {main}
"} 

解決策

ルートのキャッシュが起因している可能性があります。
下記でキャッシュを消しましょう。

$ php artisan route:clear

もし、コマンドが実行できない場合は、直接キャッシュファイルを消す事でも対応できます。
キャッシュはapp/bootstrap/caches/配下にありますので削除してください。

参考

ドキュメントの「ルートキャッシュ」を参照してください。
readouble.com


以上です。
解決策がわかればなんて事はない事なのですが、サイト自体が見えなくなるので影響は大きいエラーです。
もちろんこれ以外にも起因している可能性はあります。

もし、アプリケーションのソースを戻して表示されない場合はこの方法を試してみるのも良いかもしれません。

©︎2017-2018 WebSandBag