Laravel5のエラーページカスタマイズ

resources/views/errors/STATUS.blade.phpをつくってあげるとそのまま表示してくれるという便利なLaravelです。

resources/views/errors/403.blade.php
resources/views/errors/404.blade.php
resources/views/errors/500.blade.php

500の表示は本番モードみたいなやつにしないと駄目で、デフォルトではデバックモードになっています。まずは.envファイルをproducton用にパラメータを変更してあげてください。
Debuggerなどを使っている場合もいったん隠す設定にしましょう。config/debugbar.phpとかで設定。

APP_ENV=production
APP_DEBUG=false

たぶんキャッシュ消さないと駄目です。
あとはコントローラでabort(“500”)とかで人工的にエラーを発生させてあげればOKです。404は適当なURIを入れると反応してくれる筈。
(とはいえ500エラーはこのままだと反応しないです。)

「Whoops, looks like something went wrong.」をカスタマイズ

Laravel5の例外ExceptionエラーページはデフォルトのSymfonyエラーページが出ます。あるいは最近は

The page has expired due to inactivity. Please refresh and try again

も出ますね。開発中は重宝しますがプロダクト環境ではこれだとマズイ。

app/Exceptions/Handler.phpのrenderメソッドに例外が出た場合は500エラーで吸収するようにします。

public function render($request, Exception $exception)
{
    // Exceptionは500エラーとして扱う
    if (!$this->isHttpException($exception)) {
        abort(500);
    }
    return parent::render($request, $exception);
}

CSRFトークンのエラーとか個別に例外を拾えます。

中身はPHPのerrorexceptionである

Laravelの例外処理の扱いは、PHP標準のerrorexceptionの処理であるということがわかりました。
http://php.net/manual/ja/class.errorexception.php
このようにやればいいようです。



【Laravel5】エラーページ(500.blade.php)が呼ばれないときの対応
http://qiita.com/sakuraya/items/af38c4cf84459a8b5967
Laravel5: エラーページを共通化〜どんなステータスコードでもどんと来い!

Last update: 2018.03.16 (金)