LoginSignup
4
1

More than 3 years have passed since last update.

PHP8・Laravel8にバージョンアップしたらartisanが”Required parameter $message follows optional parameter $level ”で実行できなくなったので対処した

Posted at

出来事

ある日久々にphp artisan serveをしてみたら以下のエラーが出て実行できなかった。

Log.php line 24
  Required parameter $message follows optional parameter $level 

遠因

PHP8になって、メソッドにおいて必須でないパラメータが必須のパラメータより前に定義されているとエラーを吐くようになったらしい。
そういえばLaravelはVersion7系にはあげたけれど、途中だったかもしれないと思って調査を開始。

原因

  • Composerで入れたパッケージのアップグレードを途中で放り出していた。
  • 何らかのミスでPHP8が入ってしまった。

どちらかだと思う。お粗末な話なので対処を開始。

解決手順

アップグレードガイドに従ってComposerパッケージをアップグレード

上記だけでは解決しなかった。

Log.phpという名前のファイルを検索

vendor/laravel/framework/src/Illuminate/Support/Facades/Log.php
が真っ先に見つかるがL24にはコメントしかない。

さらに探すと、
vendor/itsgoingd/clockwork/Clockwork/Request/Log.php
において、怒られている記述を発見できた。(v4.1.8)

itsgoingd/clockworkをアップグレード

2021/1時点での最新版は5.0.6らしいので、composer.jsonを以下のように修正。

composer.json
 "itsgoingd/clockwork": "^5.0"

アップデートを実行。

$ composer update

解決した。

% php artisan serve
Starting Laravel development server: http://127.0.0.1:8000
[Sun Jan 10 11:46:10 2021] PHP 8.0.1 Development Server (http://127.0.0.1:8000) started

反省

PHP・Laravelのメジャーバージョンアップがどれほど面倒か身にしみてわかったので、今後の業務に活かしたい。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1