はじめに
プロジェクトファイルをgitからクローンしてartisanコマンドを入力したら以下のエラーがでた。
PHP Fatal error: Uncaught Error: Class 'CommonHelper' not found in /home/vagrant/{アプリ名}/app/Logging/CustomJsonFormatter.php:13
Stack trace:
#0 /home/vagrant/{アプリ名}/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php(40): App\Logging\CustomJsonFormatter->format()
#1 /home/vagrant/{アプリ名}/vendor/monolog/monolog/src/Monolog/Logger.php(323): Monolog\Handler\AbstractProcessingHandler->handle()
#2 /home/vagrant/{アプリ名}/vendor/monolog/monolog/src/Monolog/Logger.php(541): Monolog\Logger->addRecord()
#3 /home/vagrant/{アプリ名}/vendor/laravel/framework/src/Illuminate/Log/Logger.php(176): Monolog\Logger->error()
#4 /home/vagrant/{アプリ名}/vendor/laravel/framework/src/Illuminate/Log/Logger.php(87): Illuminate\Log\Logger->writeLog()
#5 /home/vagrant/{アプリ名}/vendor/laravel/framework/src/Illuminate/Log/LogManager.php(547): Illuminate\Log\Logger->error()
#6 /home/vagrant/{アプリ名}/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(121): Illuminate\Log\LogManager->error()
#7 /home/vagrant/{アプリ名}/app/Exceptions/ in /home/vagrant/{アプリ名}/app/Logging/CustomJsonFormatter.php on line 13
解決するためにした事
1,composer dump-autoload
クラスがない系のエラーは大体composer dump-autoloadで直ると思っていたら同じようなエラー内容が表示された。
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi
PHP Fatal error: Uncaught Error: Class 'CommonHelper' not found in /home/vagrant/{アプリ名}/app/Logging/CustomJsonFormatter.php:13
以下同文
どうやらクラスの読み込みが問題ではなく、そもそもartisanコマンド自体が受け入れられていないようだ。
2,routes/web.phpの構文ミス
あれこれ悩んだ結果、結局routesのファイルで構文ミスをしていただけで、内容は括弧が一行分足りていなかった。
これとCommonHelperのクラスがみつからなくなる因果関係が未だわかっていないが、おそらくLaravelのアーキテクチャに関わるデザインパターンのファイルを間違えるとそもそもクラスの読み込みまで到達してくれないのではないか、その為Stack traceで全く関係のないlog周りの内容が表示されているのだと思います。
おわりに
同様なエラーが発生された方がいましたら、Laravelのアーキテクチャに関わるデザインパターンのファイルを調べてみてください。