Help us understand the problem. What is going on with this article?

Laravel7にアップグレードすると、artisanコマンドが死ぬ

Laravel7がでましたね!早速人柱的に上げてみましたところ、案の定動かなくなりました。
Laravel6からLaravel7へアップグレードすると、artisanコマンドが謎のステータスコード255を吐いて死にます。
これはcomposer updateしたときに

Script @php artisan package:discover handling the post-autoload-dump event returned with error code 255

なエラーとなって表れてきます。
ググってもやれcacheを消せだの出てきますが、全く効果がありません!!
この時には、

php artisan --version

と叩いてもコンソールに何も出てこなくて、

echo $?
255

っとでるので、artisanコマンド自体が死んでいることが分かります。
これ、とてもとても地味にハマって数時間悩んだのですが、
アップグレードガイドのSymfony 5 Related Upgrades
が該当します。(といってもさらっと流しただけだと気づかないんですが)
修正方法はこれです。

app/Exceptions/Handler.php が今回修正対象となっていまして、 最初にこれを上記のように修正しないとartisanコマンドが動作しません。
なおこれは、

composer update --vvv

として詳細ログをみても、php.iniのエラーレベルをE_ALLにしても何も出てきません。artisanコマンド中のkernel->handler()で音もなく死にます・・・


余談ですが、Laravel7にすると、npmみたいにphp artisan test でテストが実行できます。

./vender/bin/phpunit

とかしなくてもいいです。
見やすく整形されていい感じですよ。

root@03791d802551:/var/www/web# php artisan test

   PASS  Unit\ExampleTest
  ✓ basic test

   PASS  Feature\CommandTest
  ✓ コマンド実行

   PASS  Feature\ExampleTest
  ✓ basic test

   PASS  Feature\HomeTest
  ✓ 一覧表示

   PASS  Feature\LogInOutTest
  ✓ ログイン失敗
  ✓ ログイン成功
  ✓ ログアウト
  ✓ ログインしていないのにログアウト
  ✓ ログイン試行ブロック
  ✓ ログイン履歴
  ✓ パスワードリセット
  ✓ リセット失敗
  ✓ パスワードリセット可能か

   PASS  Feature\RssCategolyListTest
  ✓ r s sカテゴリ登録
  ✓ r s sカテゴリ編集
  ✓ r s sカテゴリ削除
  ✓ r s sカテゴリ二重登録

   PASS  Feature\RssListTest
  ✓ r s s登録
  ✓ r s s編集
  ✓ r s s削除
  ✓ r s s二重登録
  ✓ r s s編集その2

   PASS  Feature\UserTest
  ✓ ユーザ登録
  ✓ ユーザ登録パスワード短い
  ✓ ユーザ登録パスワード間違い
  ✓ ユーザ情報修正
  ✓ ユーザ削除
  ✓ ユーザ削除キャンセル

  Tests:  28 passed
  Time:   15.90s
akira345
なんちゃってインフラ担当。chefやsdkなどを使ってのインフラ周りの自動化に興味があります。
http://akira-junkbox.blogspot.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away