14. 章. エラー処理

PHP には、複数のエラーと警告があります。これらを以下に示します。

表 14-1. PHPエラーの型

記号説明note
1E_ERROR致命的なランタイムエラー 
2E_WARNINGランタイム警告(致命的でないエラー) 
4E_PARSEコンパイル時のパーサエラー 
8E_NOTICE 実行時の通知(警告よりも重要度は低い)  
16E_CORE_ERRORPHPの初期スタートアップ時に生じた致命的なエラーPHP 4のみ
32E_CORE_WARNINGPHPの初期スタートアップ時に生じた警告(致命的でないエラー)PHP 4のみ
64E_COMPILE_ERROR致命的なコンパイルエラーPHP 4のみ
128E_COMPILE_WARNINGコンパイル時の警告(致命的ではないエラー)PHP 4のみ
256E_USER_ERRORユーザが生成したエラーメッセージPHP 4のみ
512E_USER_WARNINGユーザが生成した警告メッセージPHP 4のみ
1024E_USER_NOTICE ユーザが生成した通知メッセージPHP 4のみ
 E_ALL上記のもの全てPHP 4のみ

上記の値(数値または記号のどちらか)は、レポートするエラーの指定する ビットマスクを作成する際に使用されます。複数のエラー型を組み合わせ たりマスクしたりするためにビット演算子 '|'、'&'、'~' を使用する ことが可能です。デフォルトの設定は通知以外の全てのエラーを出力する ようになっており、PHP4ではE_ALL & ~E_NOTICE、 (PHP3は定数記号をサポートしていないため、)PHP3では7となっています。

この設定は、設定ファイルのerror_reporting命令で変更可能です。また、 Apacheのhttpd.confファイルのphp_error_reporting命令(PHP3では php3_error_reporting)で設定することも可能です。また、実行時にスクリ プト内で関数error_reporting()を使用して設定する ことも可能です。

警告

PHP3からPHP4にコードまたはサーバーを更新る場合、これらの設定および error_reporting()のコールを確認する必要がありま す。新しいエラー型、特にE_COMPILE_ERRORの出力を無効にしたいと思う という人もいると思われます。これを無効にすると空の文書が出力される 可能性があり、この場合には、生じた現象や問題の発見に関するフィード バックは全く得られません。

全ての PHP 式 は、先頭に "@" を付けてコールすることも可能です。 この場合、その式に関するエラーメッセージの出力がオフにされます。 そのような式においてエラーが発生し、 track_errors 機能が有効の 場合、グローバル変数 $php_errormsg からエラーメッセージを 得ることができます。

警告

現在の実装では、"@"は、スクリプトの実行を終了するような致命的なエ ラー出力さえ無効にします。