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

LaravelでWhoopsを使って詳細なエラー画面を表示する方法!ローカル開発環境向け完全ガイド

LaravelでWhoopsを使って詳細なエラー画面を表示する方法(ローカル開発用)
LaravelでWhoopsを使って詳細なエラー画面を表示する方法(ローカル開発用)

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

生徒

「Laravelで開発中にエラーが出ると、英語のエラー画面が表示されるんですが、もっとわかりやすくエラーの原因を確認できる方法はありますか?」

先生

「そういうときはWhoopsというライブラリを使うと、カラフルで見やすいエラー画面が表示されて、どのファイルの何行目で問題が起きたかが一目でわかるようになりますよ。」

生徒

「それは便利そうですね!どうやって導入すればいいですか?」

先生

「インストールから設定まで手順はシンプルです。一緒に確認していきましょう!」

1. Whoopsとは何か?どんなことができるのか

1. Whoopsとは何か?どんなことができるのか
1. Whoopsとは何か?どんなことができるのか

Whoopsとは、PHPアプリケーション向けのエラーハンドリングライブラリです。ライブラリとは、よく使う機能をまとめて再利用できるようにしたプログラムの部品集のことです。

Laravelのデフォルト(初期設定)のエラー画面は、エラーの種類とメッセージが表示されるシンプルなものです。しかしWhoopsを導入すると、エラーが起きたファイル名・行番号・そのファイルのコード全体・エラーの呼び出し履歴(スタックトレース)・サーバー情報などを色分けして見やすく表示してくれます。

スタックトレースとは、エラーが発生するまでにどのファイルのどの関数が順番に呼び出されたかを一覧にしたものです。料理の手順書でいえば「どの工程でミスをしたか」を追跡できるリストのようなものです。この情報があると、エラーの原因をたどるのがとても簡単になります。

Whoopsはあくまでも開発中(ローカル環境)での利用を想定したツールです。本番環境(実際にユーザーが使う環境)では詳細なエラー情報を表示するとセキュリティ上のリスクになるため、絶対に使わないようにしましょう。

2. WhoopsをComposerでインストールする方法

2. WhoopsをComposerでインストールする方法
2. WhoopsをComposerでインストールする方法

WhoopsはComposerというPHPのパッケージ管理ツールを使って簡単にインストールできます。Composerとは、PHPのプロジェクトで必要なライブラリを自動でダウンロードして管理してくれるツールです。

ターミナル(文字を打ち込んでパソコンに命令する画面)でLaravelプロジェクトのフォルダに移動してから、以下のコマンドを実行します。


// 開発環境のみにインストールするコマンド(--dev オプションで本番には含まれない)
composer require filp/whoops --dev

--devオプションをつけることで「開発時だけ使うパッケージ」として登録されます。このオプションをつけるとcomposer.jsonファイルのrequire-devという項目に追加され、本番環境でインストールするときに自動的に除外されます。composer.jsonとは、プロジェクトが使っているライブラリの一覧を管理するファイルです。

インストールが完了するとvendorフォルダの中にWhoopsのファイルが追加されます。vendorフォルダとは、Composerでインストールしたすべてのライブラリが格納される場所です。

3. LaravelとWhoopsの関係を理解しよう

3. LaravelとWhoopsの関係を理解しよう
3. LaravelとWhoopsの関係を理解しよう

実はLaravel自体がWhoopsとの連携を標準でサポートしています。Laravelのエラーハンドリング(エラー処理)の中核を担うapp/Exceptions/Handler.phpは、内部でWhoopsを呼び出す準備ができているため、インストールするだけで自動的に適用されることがあります。

ただしWhoopsが有効になる条件があります。.envファイルのAPP_DEBUGtrueになっていることが必要です。APP_DEBUG=trueのときはLaravelが詳細なエラー情報を表示するモードになり、Whoopsのリッチなエラー画面が使われます。


// .envファイルの設定確認(開発環境の場合)
APP_ENV=local
APP_DEBUG=true   // trueにするとWhoopsのエラー画面が表示される

APP_ENV=localは「このアプリはローカル(自分のパソコン)で動いています」という設定です。APP_DEBUG=trueにすることで詳細なエラー情報が画面に表示されます。本番環境では必ずAPP_DEBUG=falseにして、エラーの詳細をユーザーに見せないようにすることが大切です。

4. Whoopsのエラー画面の見方と活用方法

4. Whoopsのエラー画面の見方と活用方法
4. Whoopsのエラー画面の見方と活用方法

Whoopsが有効な状態でエラーが発生すると、ブラウザに色分けされたエラー画面が表示されます。この画面にはいくつかの重要な情報が含まれています。

画面の上部にはエラーの種類とメッセージが大きく表示されます。たとえば「ErrorException: Undefined variable $user」と表示されていれば、「$userという変数が定義されていない」というエラーが起きたことがわかります。

その下にはコードのハイライト表示があります。エラーが発生した行が色つきで強調表示され、その前後のコードも見られます。これにより「どこに問題があるか」をすぐに特定できます。

さらに下にはスタックトレースが一覧表示されます。各項目をクリックすると、その時点のファイルとコードが展開表示されます。エラーの流れを上から順に追っていくことで、根本的な原因を見つけることができます。

画面の右側にはリクエスト情報(アクセスのURL・HTTPメソッドなど)、Cookie(クッキー:ブラウザに保存される小さなデータ)の内容、セッション(ユーザーの状態を一時保存したもの)の内容なども確認できます。これらの情報を組み合わせることで、どんな操作をしたときにエラーが起きたかを詳しく調べることができます。

5. 手動でWhoopsを設定する方法(カスタマイズが必要な場合)

5. 手動でWhoopsを設定する方法(カスタマイズが必要な場合)
5. 手動でWhoopsを設定する方法(カスタマイズが必要な場合)

通常はインストールとAPP_DEBUG=trueの設定だけで動きますが、Whoopsの動作を細かくカスタマイズしたい場合は、サービスプロバイダーを使って手動で設定することもできます。サービスプロバイダーとはLaravelの起動時に各種機能を登録・初期化するクラスのことです。

以下はapp/Providers/AppServiceProvider.phpにWhoopsを手動で登録する例です。


<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Whoops\Run as WhoopsRun;
use Whoops\Handler\PrettyPageHandler;

class AppServiceProvider extends ServiceProvider
{
    public function register(): void
    {
        // ローカル環境のときだけWhoopsを登録する
        if ($this->app->isLocal()) {
            $whoops = new WhoopsRun;
            $whoops->pushHandler(new PrettyPageHandler);
            $whoops->register();
        }
    }
}

$this->app->isLocal()は「現在の環境がローカル(開発環境)かどうか」を確認するメソッドです。trueのときだけWhoopsを有効にすることで、本番環境で誤って有効になるリスクを防げます。PrettyPageHandlerがWhoopsのきれいなエラー画面を生成するクラスです。

6. Whoopsのエラー画面からエディタを開く便利な設定

6. Whoopsのエラー画面からエディタを開く便利な設定
6. Whoopsのエラー画面からエディタを開く便利な設定

Whoopsには、エラー画面のファイル名・行番号をクリックすると直接コードエディタ(プログラムを書くソフト)でそのファイルを開くリンク機能があります。これを使うと、エラー箇所のファイルを自分で探して開く手間が省けて作業がとてもスムーズになります。

使用しているエディタの設定をPrettyPageHandlerに渡すことで有効になります。VS Code(Visual Studio Code)を使っている場合は以下のように設定します。


<?php

use Whoops\Handler\PrettyPageHandler;

$handler = new PrettyPageHandler;

// VS Codeでファイルを開けるようにエディタを指定する
$handler->setEditor('vscode');

// 他のエディタの指定例
// $handler->setEditor('phpstorm');   // PhpStorm
// $handler->setEditor('sublime');    // Sublime Text
// $handler->setEditor('atom');       // Atom

setEditor()メソッドにエディタ名を渡すだけで設定できます。設定後はWhoopsのエラー画面に表示されるファイル名がリンクになり、クリックするとそのエディタで該当ファイルが自動的に開きます。特にエラーが深いファイルの中で起きている場合に、この機能があると作業効率が大幅にアップします。

7. 本番環境でWhoopsを無効にする重要性と確認方法

7. 本番環境でWhoopsを無効にする重要性と確認方法
7. 本番環境でWhoopsを無効にする重要性と確認方法

Whoopsは開発を助けてくれる非常に便利なツールですが、本番環境で有効になっていると重大なセキュリティリスクになります。エラー画面にはファイルのパス(場所)・データベースの設定情報・変数の中身など、悪意のある第三者に知られてはいけない情報が含まれる可能性があるからです。

本番環境では必ず以下の設定になっていることを確認しましょう。


// 本番環境の.envファイル設定(必ずこうする)
APP_ENV=production
APP_DEBUG=false   // falseにするとWhoopsは無効になる

APP_DEBUG=falseにすることで、エラーが起きても詳細情報は表示されず、シンプルなエラーページだけが表示されます。APP_ENV=productionは「本番環境で動いています」という宣言です。Laravelはこの設定を見て動作を切り替えるため、デプロイ(サーバーへの公開)のたびに.envファイルの内容を確認する習慣をつけることが大切です。

またcomposer install --no-devコマンドを使って本番環境にインストールすると、--devオプションつきでインストールしたWhoopsなどのパッケージは含まれません。これにより開発ツールが本番サーバーに混入するリスクも防げます。本番と開発でパッケージを正しく分けて管理することが、安全なLaravelアプリ開発の基本姿勢といえます。

カテゴリの一覧へ
新着記事
New1
Symfony
Twigのテンプレート分割と再利用を完全解説!初心者向けinclude・embedの使い方
New2
Laravel
Laravelのマイグレーション構文まとめ!table・column・indexをやさしく解説
New3
PHP
PHPの文法ルールまとめ!セミコロンや大文字小文字の区別を初心者に解説
New4
Symfony
Twigでセッションとユーザー情報を表示する方法!Symfony初心者向け完全ガイド
人気記事
No.1
Java&Spring記事人気No1
CodeIgniter
CodeIgniterのフィルタ機能を完全ガイド!初心者でもわかるイベント・フィルタの使い方
No.2
Java&Spring記事人気No2
CodeIgniter
CodeIgniter 4のインストール方法まとめ(Composer・手動)
No.3
Java&Spring記事人気No3
Laravel
Laravelでtry-catchを使いこなす!例外処理の基本と効果的なパターン
No.4
Java&Spring記事人気No4
CodeIgniter
CodeIgniterのルーティングとは?仕組みと役割を基礎から解説
No.5
Java&Spring記事人気No5
Laravel
Laravelのプロジェクト構造を理解しよう!初心者向けディレクトリ解説
No.6
Java&Spring記事人気No6
Symfony
Symfonyでアップロードファイル名を安全に変更・管理する方法を完全解説
No.7
Java&Spring記事人気No7
Laravel
Laravelのインストール方法まとめ!ComposerとLaravel Installerの使い方
No.8
Java&Spring記事人気No8
CodeIgniter
CodeIgniterの認証チェックをフィルタで実装する方法!初心者でもわかる完全ガイド