CodeIgniterでエラーメッセージを画面表示する方法!初心者向けエラーハンドリング徹底解説
生徒
「CodeIgniterでプログラムを作っているのですが、エラーが起きても画面が真っ白で何が悪いのか分かりません…。」
先生
「それは困りましたね。プログラムに間違いがあるとき、どこが間違っているか教えてくれるのが『エラーメッセージ』です。」
生徒
「どうすればそのメッセージを画面に出せるようになりますか?」
先生
「CodeIgniterには、開発中だけエラーを表示させる便利な設定があります。一緒に設定方法を見ていきましょう!」
1. エラーメッセージとエラーハンドリングとは?
プログラミングをしていると、必ずどこかで書き間違いや勘違いが発生します。これをバグと呼びますが、バグがあるときに「ここが間違っているよ!」と教えてくれる通知がエラーメッセージです。
そして、そのエラーが発生したときに、プログラムをどう動かすか、あるいはどうやって人間に知らせるかという一連の仕組みをエラーハンドリング(例外処理)と言います。ハンドリングとは「操作する」「扱う」という意味で、車のハンドル操作と同じように、エラーというトラブルを上手にコントロールすることを指します。
CodeIgniter(コードイグナイター)というPHPのフレームワーク(便利な道具箱のようなもの)では、このエラーハンドリングをとても簡単に設定できるようになっています。初心者の方はまず、「開発中はエラーを画面に出し、完成して公開するときはエラーを隠す」という切り替えを覚えることが大切です。
2. 開発モード(Environment)を「development」に設定する
CodeIgniterでエラーを表示させる一番の方法は、システムの状態を「development(開発中)」モードにすることです。パソコンを初めて触る方にとっては聞き慣れない言葉かもしれませんが、これは「今は作成中だから、エラーを全部見せてね」という合図になります。
設定は、プロジェクトのメインフォルダにある.envというファイル、またはindex.phpで行います。特によく使われるのが.envファイルです。このファイルの中に、環境を定義する場所があります。
環境(environment)とは、プログラムが動いている状況のことです。自分のパソコンで練習しているときは「開発環境」、世界中の人が見る本番のサイトは「本番環境(production)」と呼び分けます。
# .envファイルの中身を書き換える例
CI_ENVIRONMENT = development
このように設定するだけで、もしプログラムに間違いがあれば、CodeIgniterが詳細なエラー画面を表示してくれるようになります。逆にここをproductionにすると、セキュリティのためにエラー内容は隠されます。
3. 実際にエラーを表示させてみよう(構文エラーの例)
では、わざと間違ったコードを書いて、どのようにエラーが表示されるか実験してみましょう。例えば、命令の最後につける「セミコロン(;)」を忘れてみます。これは初心者の方が最もよくやってしまうミスの一つです。
これを専門用語で構文エラー(Syntax Error)と呼びます。文章の書き方が間違っていて、コンピュータが意味を理解できない状態のことです。日本語で言うと「私は、ご飯を」で文章が終わってしまい、何を言いたいのか分からないような状態ですね。
// コントローラー内のメソッド例
public function index()
{
$message = "こんにちは" // ここでセミコロンを忘れる
echo $message;
}
このプログラムを実行すると、開発モードであれば画面に「syntax error, unexpected 'echo'」といったメッセージが表示されます。これは「echoがあるはずのない場所に出てきたよ(その前の行が終わっていないからだよ)」というヒントをくれているのです。これを見れば、どこを直せばいいかすぐに分かりますね。
4. ログファイルを確認してエラーを特定する
画面にエラーを表示する以外にも、「ログ」という記録をファイルに残す方法があります。ログとは、航海日誌や日記のようなもので、システムがいつ、どんなエラーを起こしたかを自動でメモしてくれる機能です。
画面にエラーを出すと、見た目が崩れてしまったり、サイトの裏側が他人にバレてしまったりするリスクがあります。そのため、画面には出さずに、裏側のファイルにこっそり書き込んでおくという手法がよく使われます。CodeIgniterではwritable/logs/というフォルダの中に、日付ごとのファイルが作られます。
設定ファイル(app/Config/Logger.php)で、どのレベルまで記録するかを決めることができます。これを調整することで、深刻なエラーだけを記録したり、ちょっとした注意(デバッグ情報)まで記録したりできるようになります。
// 設定ファイルでのログレベル設定例
public $threshold = 4; // 4にすると細かいデバッグ情報まで全て記録されます
実行結果として、ログファイルには以下のように書き込まれます。
ERROR - 2026-01-08 10:00:00 --> Severity: Error --> Division by zero /path/to/file.php 45
これは「45行目で0で割り算をしようとしたよ」というエラーの記録です。数学と同じで、プログラミングでも0で割ることは禁止されているため、エラーが発生します。
5. 例外処理(try...catch)を使ってみよう
次に、少しレベルアップして例外処理(Exception Handling)に挑戦しましょう。これは、「もしエラーが起きそうだったら、こっちの処理をしてね」とあらかじめ予約しておく方法です。これを使うには、try(トライ)とcatch(キャッチ)という言葉を使います。
「エラーが起きるかもしれないけどやってみる(try)」、もしエラーが起きたら「それを捕まえて(catch)、別の対応をする」という流れです。例えば、インターネットから画像を取ってこようとしたけれど、相手のサイトが落ちていて取れなかった場合などに便利です。そのままエラーで画面を止めるのではなく、「画像がありませんでした」という優しいメッセージを出すことができます。
public function showUser($id)
{
try {
// IDが0以下の場合はわざとエラー(例外)を投げる
if ($id <= 0) {
throw new \Exception("正しいIDを指定してください。");
}
echo "ユーザーID " . $id . " の情報を表示します。";
} catch (\Exception $e) {
// エラーが発生したときの処理
echo "【エラー通知】: " . $e->getMessage();
}
}
このコードで$idに-1を入れた場合の実行結果は以下のようになります。
【エラー通知】: 正しいIDを指定してください。
このように、システムが突然真っ白になって止まるのを防ぎ、ユーザーに何が起きたかを分かりやすく伝えることができます。これを「親切なエラー表示」と呼びます。
6. 404エラー(ページが見つからない)の表示方法
インターネットを使っていると、「404 Not Found」という文字を見たことはありませんか?これは、アクセスしたURLが存在しないときに表示されるエラーです。CodeIgniterでも、存在しないページにアクセスされたときに、このエラーを画面に表示させることができます。
自分でこのエラーを呼び出したいときは、PageNotFoundExceptionという特別な仕組みを使います。これを使うことで、不適切なアクセスがあったときに「そのページはありませんよ」と正しく案内できます。
public function profile($name = null)
{
if ($name === null) {
// 名前が指定されていない場合は、404エラー画面を表示する
throw \CodeIgniter\Exceptions\PageNotFoundException::forPageNotFound();
}
echo $name . "さんのプロフィールページです。";
}
こうすることで、CodeIgniterが用意してくれている「お洒落なエラー専用の画面」が表示されます。初心者のうちは、自分でエラー画面を作るのは大変ですが、この一行を書くだけでしっかりとしたエラー対応ができるようになります。
7. 画面に表示されるエラー内容を読み解くコツ
CodeIgniterのエラー画面は非常に高機能です。初めて見ると英語ばかりで驚くかもしれませんが、注目すべき点は決まっています。それは「エラーの種類」「エラーが起きた場所(ファイル名)」「何行目か(Line Number)」の3つです。
画面の一番上に太字で書かれているのが「何のエラーか」です。その下に、ファイルまでの住所(パス)が書いてあります。自分のパソコンのどこにあるファイルかが一目で分かります。そして「Line 12」のように数字が書いてあれば、それは「上から数えて12行目に間違いがあるよ」という意味です。
また、スタックトレースという項目もあります。これは、エラーが起きるまでに、どの関数(命令のまとまり)を順番に通ってきたかという履歴です。犯人探しの足跡のようなものですね。これを辿っていくことで、どこでデータがおかしくなったのかを突き止めることができます。最初は難しく感じますが、じっくり眺めることから始めてみましょう。
8. デバッグツールバーを活用しよう
最後に、エラー表示とは少し違いますが、エラーを防ぐための心強い味方を紹介します。CodeIgniterには、画面の右下に小さな炎のマークのアイコンが表示される機能があります。これをデバッグツールバーと呼びます。
このバーをクリックすると、今動いているプログラムがどれくらいのメモリ(パソコンのパワー)を使っているか、データベースとどんなやり取りをしたか、といった情報が丸見えになります。エラーが出る前兆を見つけたり、どこで動作が遅くなっているかを確認したりするのに非常に役立ちます。
これも、先ほど説明した「development(開発中)」モードに設定しているときだけ現れます。エラーメッセージだけでなく、このツールバーの情報も一緒に見る癖をつけることで、プログラミングの理解がぐっと深まります。エラーを恐れず、メッセージをよく読んで、一つずつ解決していくことが上達への一番の近道です。頑張りましょう!