カテゴリ: CodeIgniter 更新日: 2026/03/11

CodeIgniterのエラーハンドリング徹底解説!初心者でも安心の例外処理ガイド

CodeIgniterのエラーハンドリングとは?基本の仕組みを解説
CodeIgniterのエラーハンドリングとは?基本の仕組みを解説

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

生徒

「CodeIgniterでプログラムを作っているのですが、エラーが出たときに画面が真っ白になったり、英語の難しいメッセージが出たりして困っています。どうすればいいですか?」

先生

「それは『エラーハンドリング』という仕組みを学べば解決できますよ。CodeIgniterには、間違いを自動で見つけて、分かりやすく教えてくれる便利な機能が備わっています。」

生徒

「エラーハンドリング……難しそうな言葉ですね。パソコン初心者でも仕組みを理解できるでしょうか?」

先生

「大丈夫です!料理に例えると、焦がさないためのタイマーのようなものです。基本的な仕組みから、エラー画面のカスタマイズ方法まで、一緒に見ていきましょう!」

1. CodeIgniterのエラーハンドリングとは?

1. CodeIgniterのエラーハンドリングとは?
1. CodeIgniterのエラーハンドリングとは?

CodeIgniter(コードイグナイター)における「エラーハンドリング」とは、プログラムの実行中に発生した問題(バグや予期しない動作)を検知し、適切に処理する仕組みのことです。PHPというプログラミング言語では、本来エラーが起きると、その場で処理が止まってしまったり、ユーザーに不親切な内部情報をそのまま表示してしまったりすることがあります。

しかし、CodeIgniterを使うことで、エラーが発生した際に見やすいエラー画面を表示したり、こっそり裏側で「エラー日記(ログ)」として記録したりすることが可能になります。これを「例外処理(れいがいしょり)」とも呼びます。例外とは、プログラムにとっての「想定外の出来事」を指します。初心者の方は、まず「エラーを怖がらずに、どうやってエラーと仲良く付き合うか」を考えるのが上達の近道です。

2. 開発環境と本番環境の切り替え

2. 開発環境と本番環境の切り替え
2. 開発環境と本番環境の切り替え

CodeIgniterで最も重要なのが、「環境(Environment)」の設定です。皆さんが自分のパソコンでプログラムを書いている「開発中」と、実際に世界中の人に見てもらう「本番」では、エラーの出し方を変える必要があります。

開発中は、どこが間違っているか詳しく知りたいので、エラー内容を画面に全部出します。これを「developmentモード」と言います。逆に、本番ではセキュリティのためにエラーの詳細を隠さなければなりません。これを「productionモード」と言います。この切り替えは、プロジェクトのルート(一番上の階層)にある.envという設定ファイルで行います。


# 開発中は development に設定します
CI_ENVIRONMENT = development

# 完成して公開するときは production に変更します
# CI_ENVIRONMENT = production

もし.envファイルがない場合は、サーバーの設定などでこの値を管理します。この一行を変えるだけで、CodeIgniterが自動でエラーの表示・非表示を切り替えてくれるのです。パソコンを初めて触る方でも、この「スイッチの切り替え」だけは覚えておきましょう。

3. show_error関数でメッセージを表示する

3. show_error関数でメッセージを表示する
3. show_error関数でメッセージを表示する

自分で意図的にエラー画面を表示させたい場合があります。例えば、「会員専用ページなのにログインしていない人が来た」という時に、「権限がありません」というエラー画面を出したいですよね。そんな時に便利なのがshow_error()という命令(関数)です。

この関数を使うと、HTML(ホームページの見た目を作る言葉)で整えられた綺麗なエラー画面が表示されます。自分でエラーのデザインを作る手間が省けるので、非常に便利です。


// 会員かどうかチェックする架空のプログラム
if ($is_logged_in == false) {
    // ログインしていない場合、エラー画面を表示して停止します
    show_error('このページを見るにはログインが必要です。', 403, 'アクセス権限エラー');
}

このコードの「403」というのは「HTTPステータスコード」と呼ばれるもので、インターネットの世界での共通ルールです。「403」は「禁止されているよ」という意味になります。初心者のうちは数字の意味はわからなくても大丈夫ですが、メッセージを自由に変えられることを知っておきましょう。

4. ページが見つからない!404エラーの出し方

4. ページが見つからない!404エラーの出し方
4. ページが見つからない!404エラーの出し方

インターネットをしていると「404 Not Found(ページが見つかりません)」という表示を見たことがありませんか?CodeIgniterでも、存在しないページにアクセスされたときにこの画面を出す仕組みがあります。それがshow_404()です。

例えば、商品の詳細ページを表示するプログラムで、指定されたIDの商品がデータベースに見つからなかった場合などに使います。この関数を使うと、CodeIgniterが標準で用意している「見つかりません専用の画面」を表示してくれます。


// 商品データを検索する例
$item = $model->find($id);

if (empty($item)) {
    // データが空っぽ(empty)なら、404画面を出します
    show_404();
}

プログラムが勝手に止まるのではなく、ユーザーに「ページがないですよ」と優しく教えてあげることが、親切なサイト作りの第一歩です。これだけで、Webサイトの信頼性がぐっと上がります。

5. ログ(日記)にエラーを記録する方法

5. ログ(日記)にエラーを記録する方法
5. ログ(日記)にエラーを記録する方法

エラーは画面に出すだけでなく、こっそり記録しておくことが大切です。これを「ログ出力」と言います。例えば、夜中にサイトでエラーが起きたとき、誰も画面を見ていなくても、翌朝に管理者がログファイルを確認すれば、何が起きたか分かります。

CodeIgniterではlog_message()という関数を使って、特定のメッセージを日記帳(ログファイル)に書き込むことができます。ログには「レベル」があり、重要度を分けることができます。

  • error:本当に困った間違い(システムが止まるレベル)
  • debug:プログラムがどう動いているかのメモ(開発用)
  • info:単なるお知らせ(ユーザーがログインした、など)

// 重要なエラーが発生したときにログに書く
log_message('error', 'データベースへの接続に失敗しました。');

// 動作確認のためのメモをログに書く
log_message('debug', '商品ID:' . $id . ' の処理を開始しました。');

ログは通常、writable/logs/というフォルダの中に日付ごとに保存されます。中身はただのテキストファイルなので、メモ帳などのソフトで簡単に開いて読むことができます。

6. try-catchを使った高度な例外処理

6. try-catchを使った高度な例外処理
6. try-catchを使った高度な例外処理

プログラミングには「try-catch(トライ・キャッチ)」という構文があります。これは「とりあえずやってみて(try)、もし失敗を捕まえたら(catch)、別のことをする」という魔法のような仕組みです。CodeIgniterはPHPのこの最新の仕組みをフル活用しています。

これを使うと、深刻なエラーで画面が真っ白になるのを防ぎ、「エラーが起きましたが、今はメンテナンス中です」といった独自の対応ができるようになります。特に外部のサービス(地図を表示する、メールを送るなど)と連携するときは、相手の都合でエラーが起きやすいので、この書き方が必須になります。


try {
    // 難しい処理に挑戦!
    $result = $this->external_api->send_data($my_data);
    echo '送信に成功しました!';
} catch (\Exception $e) {
    // 失敗(例外)をキャッチしたらここが動く
    echo 'ごめんなさい、エラーが起きてしまいました。';
    // 何が起きたか日記にも書いておく
    log_message('error', $e->getMessage());
}

$e->getMessage()というのは、「エラーの理由を教えて」という命令です。これを使えば、原因を突き止めるのがとても楽になります。最初は難しいかもしれませんが、「tryは挑戦、catchは失敗した時の備え」と覚えましょう。

7. エラー画面のデザインをカスタマイズする

7. エラー画面のデザインをカスタマイズする
7. エラー画面のデザインをカスタマイズする

CodeIgniterが標準で出すエラー画面は、少し無機質で英語が多いことがあります。自分のサイトに合わせて、可愛らしいデザインや日本語の説明に変えたいですよね。実は、エラー画面の見た目も簡単に変更できます。

CodeIgniterのフォルダの中にapp/Views/errors/html/という場所があります。ここにはエラー画面の「型紙(テンプレート)」が入っています。例えばerror_404.phpというファイルを編集すれば、ページが見つからない時の画面を自由にデコレーションできます。

HTMLやCSS(デザインを整える言葉)を少し勉強すれば、初心者の型でもオリジナルのエラーページが作れます。ユーザーを迷わせないために、「トップページに戻る」ボタンを配置しておくのがコツです。

8. エラーを恐れずに学習を続けるコツ

8. エラーを恐れずに学習を続けるコツ
8. エラーを恐れずに学習を続けるコツ

最後に、プログラミング初心者が一番大切にすべき心構えをお伝えします。それは「エラーは敵ではなく、先生である」ということです。パソコンが赤い文字でエラーを出しているのは、意地悪をしているのではなく、「ここを直せば動くよ!」というヒントをくれているのです。

CodeIgniterのエラーハンドリングを学べば、そのヒントをより正確に受け取ることができるようになります。画面に何も出なくて「なぜか動かない」状態が一番大変です。しっかりエラーを出して、それを一つずつ解決していくことが、エンジニアへの一番の近道です。もしエラーメッセージが英語で分からなければ、翻訳ツールを使ってみましょう。ほとんどの答えは、エラーメッセージの中に隠されています。

カテゴリの一覧へ
新着記事
New1
Symfony
Symfonyのルーティング構成の基本を完全解説!初心者向けにYAML・PHP・アノテーション方式をやさしく紹介
New2
Laravel
Laravelのルートグループの使い方!初心者でもわかるprefixやミドルウェアの設定方法
New3
PHP
PHPのswitch文の使い方!多くの条件分岐をスッキリ書く方法と注意点
New4
Symfony
Symfony学習に役立つおすすめドキュメント・教材・リソース一覧【初心者向け】
人気記事
No.1
Java&Spring記事人気No1
PHP
PHPのif文の使い方を完全ガイド!初心者でもわかる条件分岐の基本
No.2
Java&Spring記事人気No2
PHP
PHPのswitch文の使い方!多くの条件分岐をスッキリ書く方法と注意点
No.3
Java&Spring記事人気No3
Symfony
Symfonyで翻訳(i18n)機能を使う方法を解説!初心者にもわかる国際化対応の基本
No.4
Java&Spring記事人気No4
CodeIgniter
CodeIgniterルーティングを完全攻略!正規表現でURLを自由自在に操る方法
No.5
Java&Spring記事人気No5
PHP
PHPで文字列を結合する方法!ドット演算子と代入演算子の使い方を徹底解説
No.6
Java&Spring記事人気No6
CodeIgniter
CodeIgniter(コードイグナイター)入門!どんな開発案件に向いている?利用シーン別解説
No.7
Java&Spring記事人気No7
Laravel
LaravelのAPIルーティングを設定する方法!初心者でもわかるapi.phpの使い方
No.8
Java&Spring記事人気No8
Laravel
Laravelのview()関数の使い方を完全ガイド!初心者でもわかるBladeテンプレート表示と画面作成