カテゴリ: Laravel 更新日: 2026/03/18

Laravelのエラー画面をカスタマイズする方法!errors/xxx.blade.phpの使い方を初心者向けに解説

Laravelでエラー画面をカスタマイズする方法(`errors/xxx.blade.php`)
Laravelでエラー画面をカスタマイズする方法(`errors/xxx.blade.php`)

先生と生徒の会話形式で理解しよう

生徒

「Laravelで404エラーや500エラーが出たとき、デフォルトの味気ない画面じゃなくて、自分でデザインしたページを表示させることってできますか?」

先生

「できますよ。resources/views/errorsフォルダにbladeファイルを置くだけで、エラー画面を自由にカスタマイズできます。難しい設定は何も必要ありません。」

生徒

「そんなに簡単なんですか?実際にどう作ればいいか教えてもらえますか?」

先生

「もちろんです。ファイルの置き場所から具体的な書き方まで、順を追って説明しますね!」

1. Laravelのエラー画面カスタマイズとは?

1. Laravelのエラー画面カスタマイズとは?
1. Laravelのエラー画面カスタマイズとは?

Webサイトやアプリを使っているとき、存在しないページにアクセスしたり、サーバーで問題が起きたりするとエラー画面が表示されます。よく見かけるものとして「404 Not Found(ページが見つかりません)」や「500 Internal Server Error(サーバーエラー)」などがあります。

Laravelを初期設定のままで使っていると、エラーが起きたときにLaravelが用意したシンプルなデフォルト画面が表示されます。この画面は機能的には問題ありませんが、サービス全体のデザインと統一感がなく、ユーザーに不安を与えてしまうこともあります。

そこで役立つのがエラー画面のカスタマイズです。自分でデザインしたエラーページを用意することで、エラーが起きたときでもユーザーに丁寧なメッセージを伝えたり、サイトのデザインに合った見た目を保ったりすることができます。Laravelではこのカスタマイズがとても簡単な仕組みになっています。

2. エラーページファイルの置き場所と命名ルール

2. エラーページファイルの置き場所と命名ルール
2. エラーページファイルの置き場所と命名ルール

Laravelでエラー画面をカスタマイズするには、resources/views/errorsというフォルダの中にbladeファイルを作るだけです。bladeファイルとは、LaravelでHTML画面を作るための専用ファイル形式で、拡張子が.blade.phpになります。

ファイルの命名ルールはとてもシンプルで、エラーのHTTPステータスコードをそのままファイル名にするだけです。たとえば404エラーのカスタムページを作りたければ404.blade.php、500エラーなら500.blade.phpというファイル名にします。

HTTPステータスコードとは、Webサーバーがブラウザに返す「状態を表す3桁の数字」のことです。よく使うコードを確認しておきましょう。

ステータスコード 意味 ファイル名
404ページが見つからない404.blade.php
403アクセス権限がない403.blade.php
500サーバー内部エラー500.blade.php
503サービス一時停止中503.blade.php

このファイルを置くだけでLaravelが自動的に認識して、対応するエラーが発生したときにそのファイルを表示してくれます。特別なルーティング(URLとページの対応付け)の設定も必要ありません。

3. 404エラーページを作ってみよう

3. 404エラーページを作ってみよう
3. 404エラーページを作ってみよう

まず最もよく使う404エラーページを実際に作ってみましょう。resources/views/errors/404.blade.phpというファイルを新しく作成して、以下の内容を書きます。


<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>404 - ページが見つかりません</title>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css">
</head>
<body class="bg-light">
    <div class="container text-center mt-5">
        <h1 class="display-1 fw-bold text-danger">404</h1>
        <p class="fs-4">お探しのページは見つかりませんでした。</p>
        <p class="text-muted">URLが間違っているか、ページが移動・削除された可能性があります。</p>
        <a href="/" class="btn btn-primary mt-3">トップページへ戻る</a>
    </div>
</body>
</html>

このファイルを保存したら、存在しないURLにアクセスしてみてください。Laravelのデフォルト画面ではなく、自分で作ったデザインのページが表示されるようになります。BootStrap5を読み込んでいるので、スタイルが整ったきれいなページになります。

4. レイアウトを共通化してエラーページを作る方法

4. レイアウトを共通化してエラーページを作る方法
4. レイアウトを共通化してエラーページを作る方法

サイト全体でヘッダーやフッターを共通のデザインにしている場合、エラーページもその共通レイアウトを使って作ることができます。Laravelのbladeテンプレートにはレイアウト継承という仕組みがあり、親となる共通レイアウトファイルを呼び出して使い回せます。

たとえばresources/views/layouts/app.blade.phpという共通レイアウトが用意されている場合、エラーページから以下のように呼び出せます。


{{-- resources/views/errors/404.blade.php --}}
@extends('layouts.app')

@section('title', '404 - ページが見つかりません')

@section('content')
    <div class="container text-center mt-5">
        <h1 class="display-1 fw-bold text-danger">404</h1>
        <p class="fs-4">お探しのページは見つかりませんでした。</p>
        <p class="text-muted">URLが間違っているか、ページが移動した可能性があります。</p>
        <a href="/" class="btn btn-primary mt-3">トップページへ戻る</a>
    </div>
@endsection

@extends('layouts.app')は「layouts/app.blade.phpを親レイアウトとして使う」という宣言です。@section@endsectionで囲まれた部分が、親レイアウトの@yieldという場所に挿入されます。この仕組みを使うと、ヘッダーやナビゲーションバーも含めた統一感のあるエラーページが作れます。

5. エラーページでエラーメッセージを表示する方法

5. エラーページでエラーメッセージを表示する方法
5. エラーページでエラーメッセージを表示する方法

カスタムエラーページの中では、$exceptionという変数を使ってエラーの情報を取得することができます。変数とはデータを入れておく箱のようなものです。$exceptionには発生した例外(エラー)の詳細情報が入っています。

ただし本番環境(実際にユーザーが使う環境)では詳しいエラー内容を画面に表示すると、セキュリティ上のリスクになることがあります。セキュリティとは、不正アクセスや情報漏えいから守るための対策のことです。そのため表示する情報は慎重に選ぶ必要があります。


{{-- resources/views/errors/500.blade.php --}}
@extends('layouts.app')

@section('title', '500 - サーバーエラー')

@section('content')
    <div class="container text-center mt-5">
        <h1 class="display-1 fw-bold text-warning">500</h1>
        <p class="fs-4">申し訳ありません。サーバーでエラーが発生しました。</p>
        <p class="text-muted">しばらく時間をおいてから再度アクセスしてください。</p>
        <a href="/" class="btn btn-secondary mt-3">トップページへ戻る</a>
    </div>
@endsection

500エラーのページでは技術的な詳細は表示せず、ユーザーへの丁寧なお詫びとトップページへの導線だけを表示するのがベストです。開発中に詳細なエラー情報を確認したい場合は、.envファイルでAPP_DEBUG=trueに設定しておくとエラー画面に詳細が表示されます。本番公開時は必ずAPP_DEBUG=falseに戻しましょう。

6. vendor:publishコマンドでLaravel標準のエラービューを取得する方法

6. vendor:publishコマンドでLaravel標準のエラービューを取得する方法
6. vendor:publishコマンドでLaravel標準のエラービューを取得する方法

Laravelには標準でエラーページのテンプレートが用意されており、それをベースにカスタマイズする方法もあります。テンプレートとは、あらかじめ用意された雛形のことです。以下のArtisanコマンドを実行すると、Laravelが内部で持っているエラービューのファイルを自分のプロジェクトにコピーできます。


// ターミナルで実行するコマンド
php artisan vendor:publish --tag=laravel-errors

このコマンドを実行するとresources/views/errorsフォルダに複数のbladeファイルが生成されます。生成されるのは404、419、429、500、503などのエラーページです。これらのファイルを開いて中身を見ると、Laravelが標準で使っているエラーページの書き方を確認できます。ゼロから作るのが難しいと感じる場合は、このファイルを改造するところから始めると取り組みやすくなります。

なお、このコマンドで生成したファイルはすべて自分のプロジェクト内のファイルになるため、自由に編集できます。元の状態に戻したくなった場合はファイルを削除すればLaravelのデフォルト表示に戻ります。

7. 503エラーページとメンテナンスモードの活用

7. 503エラーページとメンテナンスモードの活用
7. 503エラーページとメンテナンスモードの活用

Webサービスを運営していると、システムの更新やデータベースの変更のために一時的にサービスを停止する「メンテナンス」を行うことがあります。Laravelにはこのメンテナンス時間中にユーザーに503エラーページを見せる便利な機能が備わっています。

以下のコマンドを実行するとメンテナンスモードになり、アクセスしてきたユーザーに503ページが表示されます。


// メンテナンスモードを開始するコマンド
php artisan down

// メンテナンスモードを終了するコマンド
php artisan up

メンテナンス中に表示される画面もresources/views/errors/503.blade.phpを作ることでカスタマイズできます。「現在メンテナンス中です。終了予定時刻は〇〇時です。」のような丁寧なメッセージを用意しておくと、ユーザーへの印象がよくなります。

またphp artisan down --secret="合言葉"のように秘密のキーワードを設定しておくと、メンテナンス中でも特定のURLからアクセスすることで動作確認ができます。これにより本番環境でメンテナンス中の状態を確認しながら作業を進めることができ、とても実用的な機能です。

カテゴリの一覧へ
新着記事
New1
Laravel
Laravelでドメインルートを使う方法!マルチドメイン対応を初心者向けに解説
New2
Symfony
Symfonyのルーティングの基本を完全ガイド!YAML・PHP・アノテーションの違いもわかりやすく解説
New3
Laravel
Laravelのエラー画面をカスタマイズする方法!errors/xxx.blade.phpの使い方を初心者向けに解説
New4
CodeIgniter
CodeIgniter 4でレイアウトを共通化!View Layoutの使い方完全ガイド
人気記事
No.1
Java&Spring記事人気No1
Laravel
Laravelでセッションを扱う方法!保存方法と利用例を解説
No.2
Java&Spring記事人気No2
Laravel
Laravelでモデルを作成する方法をやさしく解説!php artisan make:model入門
No.3
Java&Spring記事人気No3
Laravel
Laravelの認証ミドルウェアauthとguestを徹底解説!初心者でもわかるルート制御ガイド
No.4
Java&Spring記事人気No4
Laravel
Laravelでログを出力する方法(Monolog・storage/logs)
No.5
Java&Spring記事人気No5
Symfony
Symfonyプロジェクトのディレクトリ構造を完全ガイド!初心者でもわかる仕組みをやさしく解説
No.6
Java&Spring記事人気No6
Laravel
Laravelのビューとは?Bladeテンプレートの基本を解説
No.7
Java&Spring記事人気No7
Symfony
Symfonyのインストール方法!CLIとComposerの導入手順まとめ
No.8
Java&Spring記事人気No8
Laravel
Laravelのインストール方法まとめ!ComposerとLaravel Installerの使い方