エラーの処理
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つのメッセージタイプがあります:
- エラーメッセージ。PHP のエラーやユーザのエラーなど、実際のエラーになります。
- デバッグメッセージ。デバッグ用のメッセージ。たとえば、あるクラスが初期化されたとき、デバッグ情報としてログをとることができます。
- 情報メッセージ。優先度が最も低いメッセージで、単に何かの処理についての情報になります。CodeIgniter では、ネイティブには情報メッセージが生成されることはありませんが、アプリケーションの中で必要な時に記録することができます。
Note: ログファイルに実際に書き込むには "logs" フォルダが書き込み可能でなければなりません。 さらに、ログをとる "しきい値" を application/config/config.php 内で設定する必要があります [ 訳注: 設定ファイル(config.php)の $config['log_threshold'] で指定します ]。 たとえば、エラーメッセージだけを記録し、他の2種類のメッセージを記録したくない場合などです。 0を設定すると、ログ記録が無効になります。