CodeIgniter ユーザガイド 日本語版 Version 2.0.1


エラーの処理

CodeIgniter では、下で説明しているメソッドを使って、アプリケーション内でのエラー通知を組み立てることができます。 さらに、エラーログ記録クラスを使って、テキストファイルとしてエラーおよびデバッグメッセージを保存できます。

Note: 初期状態では、CodeIgniter はすべての PHP エラーを表示するようになっています。開発が終わったら、この振る舞いを変更したいかもしれません。 メインの index.php ファイルの先頭に error_reporting() メソッドがあるのがわかると思います。 エラー報告を無効にしても、エラーが起こった時にログファイルに記録するのは無効になりません。

CodeIgniter の大部分のシステムとは違い、エラー機能は、アプリケーションの全体でグローバルに利用できる、 シンプルな手続き型のインターフェースになっています。このアプローチにより、クラス / メソッド のスコープを気にすることなく エラーメッセージを呼び出すことができます。

次の関数を使って、エラーを生成できます:

show_error('message' [, int $status_code= 500 ] )

この関数は、次のエラー画面テンプレートを使って、渡されたエラーメッセージを表示します:

application/errors/error_general.php

オプションの引数である $status_code は、エラー時に送られるべき HTTP ステータスコードを決定します。

show_404('page' [, 'log_error'])

この関数は、次のエラー画面テンプレートを使って、渡された404エラーメッセージを表示します:

application/errors/error_404.php

この関数では、ページへのパスが見つからない時に渡される文字列を想定しています。 CodeIgniter ではコントローラが見つからなかった場合に、404 メッセージが自動的に表示されるのを知っておいてください。

show_404() が呼び出されると、CodeIgniter は自動的にログに記録します。第 2 引数を FALSE とすることで、これを回避できます。

log_message('level', 'message')

この関数を使うと、ログファイルにメッセージを書き込むことができます。 第1引数で、どのタイプのメッセージかを示す3つの"レベル" (debug、error、info) のうちのどれかを指定しなければなりません。 メッセージそのものは、第2引数に指定する必要があります。例:

if ($some_var == "")
{
    log_message('error', '変数に値が含まれていませんでした');
}
else
{
    log_message('debug', '変数に値が正しくセットされました');
}

log_message('info', '変数の目的は、●●の値を提供することです');

3つのメッセージタイプがあります:

  1. エラーメッセージ。PHP のエラーやユーザのエラーなど、実際のエラーになります。
  2. デバッグメッセージ。デバッグ用のメッセージ。たとえば、あるクラスが初期化されたとき、デバッグ情報としてログをとることができます。
  3. 情報メッセージ。優先度が最も低いメッセージで、単に何かの処理についての情報になります。CodeIgniter では、ネイティブには情報メッセージが生成されることはありませんが、アプリケーションの中で必要な時に記録することができます。

Note: ログファイルに実際に書き込むには "logs" フォルダが書き込み可能でなければなりません。 さらに、ログをとる "しきい値" を application/config/config.php 内で設定する必要があります[ 訳注: 設定ファイル(config.php)の $config['log_threshold'] で指定します。 ]。 たとえば、エラーメッセージだけを記録し、他の2種類のメッセージを記録したくない場合などです。 0 を設定すると、ログ記録が無効になります。