ホーム > Laravel > 【Laravel】Handler::report(Exception $exception) must be compatible with report(Throwable $e) in Handler.php on line 37の解決方法
Laravel
【Laravel】Handler::report(Exception $exception) must be compatible with report(Throwable $e) in Handler.php on line 37の解決方法
いつもご利用ありがとうございます。
この記事には広告が掲載されており、その広告費によって運営しています。
目次
PR
エラー全文
PHP Fatal error: Declaration of App\Exceptions\Handler::report(Exception $exception) must be compatible with Illuminate\Foundation\Exceptions\Handler::report(Throwable $e) in /var/www/html/app/Exceptions/Handler.php on line 37
というエラーの解決方法についてまとめました
解決方法
Laravel6 までは、エラーの処理はException
クラスを使用していましたが、Laravel 7 以降はThrowable
クラスを使うようになりました。
よって、これまで
report(Exception $exception)
と書いていたものを、
report(Throwable $e)
に変更すると解決します。
Laravel 7 以降では Throwable を使うように変更されました。
これは PHP 7 から Throwable が Exception の親クラスとして導入されたためです。
Throwable を使うことで、Exception だけでなく Error も適切にキャッ チできるようになり、エラーハンドリングの柔軟性が向上しました。
今回の例だと、
app/Exceptions/Handler.php
を
use Throwable; // Throwable を明示的に use する
// 旧バージョンのコード(Laravel 6)
public function report(Exception $exception)
{
parent::report($exception);
}
// 修正後(Laravel 7 以降)
public function report(Throwable $exception)
{
parent::report($exception);
}
// render メソッドも修正
public function render($request, Throwable $exception)
{
return parent::render($request, $exception);
}
このように変更する必要がありました。
誰かの参考になれば幸いです。
フィードバックのお願い
この記事のフィードバックがありましたらYoutubeの適当な動画にコメントしていただいたり、お問い合わせからご連絡ください。