PHP には、複数のエラーと警告があります。これらを以下に示します。
表 15-1PHPエラーの型
値 | 記号 | 説明 | note |
---|---|---|---|
1 | E_ERROR | 致命的なランタイムエラー | |
2 | E_WARNING | ランタイム警告(致命的でないエラー) | |
4 | E_PARSE | コンパイル時のパーサエラー | |
8 | E_NOTICE | 実行時の通知(警告よりも重要度は低い) | |
16 | E_CORE_ERROR | PHPの初期スタートアップ時に生じた致命的なエラー | PHP 4のみ |
32 | E_CORE_WARNING | PHPの初期スタートアップ時に生じた警告(致命的でないエラー) | PHP 4のみ |
64 | E_COMPILE_ERROR | 致命的なコンパイルエラー | PHP 4のみ |
128 | E_COMPILE_WARNING | コンパイル時の警告(致命的ではないエラー) | PHP 4のみ |
256 | E_USER_ERROR | ユーザが生成したエラーメッセージ | PHP 4のみ |
512 | E_USER_WARNING | ユーザが生成した警告メッセージ | PHP 4のみ |
1024 | E_USER_NOTICE | ユーザが生成した通知メッセージ | PHP 4のみ |
E_ALL | 上記のもの全て | PHP 4のみ |
上記の値(数値または記号のどちらか)は、レポートするエラーの指定する ビットマスクを作成する際に使用されます。複数のエラー型を組み合わせ たりマスクしたりするためにビット演算子を使用する ことが可能です。php.iniで使用できるのは '|', '~', '!', '&' のみであることに注意して下さい。しかし、ビット演算子 でないものは、php3.iniの中で使用可能です。
PHP 4では、 error_reporting のデフォルト設定値は E_ALL & ~E_NOTICEであり、 全てのエラーを表示します。PHP 3 では、デフォルトの設定は、 (E_ERROR | E_WARNING | E_PARSE)であり、 同じことを意味します。しかし、PHP 3 のphp3.ini では定数がサポートされていないため、error_reportingの設定値は数値、 つまり7とする必要があることに注意して下さい。
この初期設定値は、設定ファイルの error_reporting命令で変 更可能です。また、Apacheのhttpd.confファイルの php_error_reporting命令(PHP3ではphp3_error_reporting)で設定すること も可能です。また、実行時にスクリプト内で関数 error_reporting()を使用して設定することも可能です。
警告 |
PHP 3からPHP 4にコードまたはサーバーを更新する場合、これらの設定および error_reporting()のコールを確認する必要がありま す。新しいエラー型、特にE_COMPILE_ERRORの出力を無効にしたいと思う という人もいると思われます。これを無効にすると空の文書が出力される 可能性があり、この場合には、生じた現象や問題の発見に関するフィード バックは全く得られません。 |
全ての PHP 式 は、先頭に "@" を付けてコールすることも可能です。 この場合、その式に関するエラーメッセージの出力がオフにされます。 そのような式においてエラーが発生し、 track_errors 機能が有効の 場合、グローバル変数 $php_errormsg からエラー メッセージを得ることができます。
注意 接頭辞 @ エラー制御演算子 は、パースエラーの結果のメッセージ出力は抑 制しません。
警告 |
現在、@ エラー制御演算子 前置子は、スクリプトの実行を終了するような 致命的なエラーの通知さえも無効にします。他方、これは、ある関数から のエラーを抑制するために @を使用した 場合、この関数が利用可能でなかったり、ミスタイプされている場合でも、 スクリプトはエラーの原因を示さずにそこで終了してしまいます。 |
以下に、PHPのエラー処理機能の使用例を示します。ファイルに(XMLフォー マットで)情報を記録するエラー処理関数を定義し、致命的なエラーの場合 は開発者にメールを送信します。
エラー処理とログ関数 の使用法を示す簡単な例です。error_reporting(), error_log(), set_error_handler(), restore_error_handler(), trigger_error(), user_error()も参照下さい。