カテゴリ: Symfony 更新日: 2026/02/13

Symfonyのエラーページ(404・500)をカスタマイズする方法を完全解説!初心者でもわかる例外処理とデバッグ

Symfonyでエラーページ(404, 500など)をカスタマイズする方法
Symfonyでエラーページ(404, 500など)をカスタマイズする方法

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

生徒

「Symfonyでページが見つからないときに、英語のエラー画面が出てきて困っています…」

先生

「Symfonyでは、404や500といったエラーページを自分用に作り替えることができます。」

生徒

「プログラミング未経験でもできますか?」

先生

「大丈夫です。仕組みを一つずつ見ていけば、誰でも理解できます。」

1. Symfonyのエラーページとは?

1. Symfonyのエラーページとは?
1. Symfonyのエラーページとは?

Symfonyのエラーページとは、エラーが発生したときに表示される特別な画面のことです。 例えば、存在しないURLにアクセスした場合は「404エラー」、プログラム内部で問題が起きた場合は「500エラー」が表示されます。 初期状態のSymfonyでは、開発者向けの英語メッセージが表示されるため、一般ユーザーには少し難しく感じられます。 そのため、エラーページをカスタマイズして、日本語で分かりやすい画面にすることが重要です。

2. 404エラーと500エラーの違いを知ろう

2. 404エラーと500エラーの違いを知ろう
2. 404エラーと500エラーの違いを知ろう

404エラーは「ページが見つかりません」という意味で、存在しない住所に手紙を出した状態に例えられます。 一方、500エラーは「サーバー内部で問題が起きました」という意味で、家の中で機械が壊れて動かなくなった状態です。 Symfonyでは、このようなエラーを例外処理として扱い、状況に応じた画面を表示できます。 例外とは「想定外の出来事」のことだと覚えておくと理解しやすいです。

3. エラーページを置く場所(Twigテンプレート)

3. エラーページを置く場所(Twigテンプレート)
3. エラーページを置く場所(Twigテンプレート)

Symfonyでエラーページをカスタマイズする場合、templates/bundles/TwigBundle/Exception というフォルダを使います。ここにHTMLに近い形式のTwigテンプレートを作成します。 Twigとは、Symfonyで使われる画面表示用の仕組みで、「画面の設計図」のような役割を持っています。


templates/
└─ bundles/
   └─ TwigBundle/
      └─ Exception/
         ├─ error404.html.twig
         └─ error500.html.twig

4. 404エラーページをカスタマイズする方法

4. 404エラーページをカスタマイズする方法
4. 404エラーページをカスタマイズする方法

404エラー専用のページは、error404.html.twigという名前で作成します。 中身は普通のHTMLとほぼ同じなので、初心者でも安心です。 ユーザーに対して「ページが見つからない理由」や「トップページへの案内」を書くと親切です。


<h1>ページが見つかりません</h1>
<p>お探しのページは削除されたか、URLが間違っている可能性があります。</p>
<a href="/">トップページへ戻る</a>

5. 500エラーページをカスタマイズする方法

5. 500エラーページをカスタマイズする方法
5. 500エラーページをカスタマイズする方法

500エラーはシステム側の問題なので、専門的な内容を表示する必要はありません。 「現在利用できません」といったやさしい表現にするのがポイントです。 Symfonyでは、error500.html.twigを用意するだけで自動的に切り替わります。


<h1>システムエラーが発生しました</h1>
<p>ご迷惑をおかけして申し訳ありません。しばらくしてから再度お試しください。</p>

6. 開発環境と本番環境で表示が変わる理由

6. 開発環境と本番環境で表示が変わる理由
6. 開発環境と本番環境で表示が変わる理由

Symfonyには「開発環境」と「本番環境」があります。 開発環境では、バグを見つけやすくするために詳細なエラー情報が表示されます。 一方、本番環境では、ユーザー向けにシンプルなエラーページが表示されます。 この切り替えによって、セキュリティと使いやすさを両立しています。


APP_ENV=prod
APP_DEBUG=0

7. コントローラで例外を投げる基本例

7. コントローラで例外を投げる基本例
7. コントローラで例外を投げる基本例

Symfonyでは、プログラムの途中で意図的にエラーを発生させることもできます。 これを「例外を投げる」と呼びます。 例えば、データが見つからない場合に404エラーを表示したいときに使います。


use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;

throw new NotFoundHttpException('データが見つかりません');

8. エラーページをカスタマイズするメリット

8. エラーページをカスタマイズするメリット
8. エラーページをカスタマイズするメリット

Symfonyでエラーページをカスタマイズすると、ユーザーが混乱しにくくなります。 また、サイト全体のデザインを統一できるため、信頼感の向上にもつながります。 SEOの面でも、突然英語の画面が出るより、日本語で案内されたほうが離脱を防げます。 404エラーや500エラーを丁寧に扱うことは、使いやすいWebアプリケーションを作る第一歩です。

カテゴリの一覧へ
新着記事
New1
Laravel
LaravelでAPIのレスポンスをテストする方法を完全解説!assertJsonで初心者も安心
New2
CodeIgniter
CodeIgniterでRESTful API開発!初心者でもわかる全体構成ガイド
New3
Symfony
Symfonyのコントローラとは?作成・構造・役割を初心者向けにやさしく解説!
New4
Symfony
Symfonyでバリデーションメッセージを多言語対応する方法!初心者でもわかる国際化の基本
人気記事
No.1
Java&Spring記事人気No1
Laravel
Laravelのシングルアクションコントローラとは?使い方と利点
No.2
Java&Spring記事人気No2
Laravel
Laravelで動的パラメータをルートに渡す方法!初心者にもやさしいルートパラメータの使い方入門
No.3
Java&Spring記事人気No3
Symfony
Symfonyの依存性注入(DI)とは?コンストラクタでの注入方法を初心者向けに徹底解説
No.4
Java&Spring記事人気No4
Laravel
Laravelでキャッシュを使う方法(ファイル・Redis・Memcached)
No.5
Java&Spring記事人気No5
Laravel
LaravelのBlade構文まとめ!@if @foreach など基本ディレクティブ解説
No.6
Java&Spring記事人気No6
Laravel
Laravelのマイグレーション履歴を確認する方法を徹底解説!migrate:statusの使い方
No.7
Java&Spring記事人気No7
Laravel
Laravelで名前付きルートを設定する方法!初心者でもわかるroute()関数の使い方
No.8
Java&Spring記事人気No8
Laravel
Laravelでファクトリを使ってテストデータを作成する方法を完全解説!初心者向けLaravelテスト入門