前のページで、エラーの表示/非表示を切り替える設定をした。
ここでやるのは、「表示する場合、表示するエラーの種類を選択する」設定。
以下のコードを実行してみる。
<?php
echo error_reporting();
?>
そうすると、「22527」とか「32767」の数値が返る。
ここでは、「22527」という値が返ったとして、話を進める。
定義済み定数
次に、このコードを実行してみる。
「8」という数値が返るハズ。
<?php
echo E_NOTICE;
?>
この「E_NOTICE」というのは、PHPの定義済み定数であり、エラーに関しては下の表の値が使える。
値 | 定数 | 説明 |
---|---|---|
1 | E_ERROR | 重大エラー。 スクリプトは中断。 |
2 | E_WARNING | 警告。 スクリプトは続行。 |
4 | E_PARSE | 文法エラー。 |
8 | E_NOTICE | 注意。 |
16 | E_CORE_ERROR | 起動時の重大エラー。 |
32 | E_CORE_WARNING | 起動時の警告。 |
64 | E_COMPILE_ERROR | コンパイル時の重大エラー。 |
128 | E_COMPILE_WARNING | コンパイル時の警告。 |
256 | E_USER_ERROR | ユーザーによる重大エラー。 |
512 | E_USER_WARNING | ユーザーによる警告。 |
1024 | E_USER_NOTICE | ユーザーによる注意。 |
2048 | E_STRICT | 互換性などの警告(1)。 |
4096 | E_RECOVERABLE_ERROR | キャッチできる重大エラー |
8192 | E_DEPRECATED | 互換性などの警告(2)。 |
16384 | E_USER_DEPRECATED | ユーザによる互換性などの警告。 |
32767 | E_ALL | 全てのエラー |
(引用元) http://php.net/manual/ja/errorfunc.constants.php
‘echo error_reporting();’で「22527」が返った。
この数値は、上の表で「E_STRICT(2048)」、「E_DEPRECATED(8192)」、「E_ALL(32767)」以外の数値を足したものである。
よって、「22527」を返した環境では、「E_STRICT(2048)」と「E_DEPRECATED(8192)」以外のエラーコードを出力する。
ただし、「display_errors」が「1」の場合ね。 (← ややこしいな。)
E_NOTICE(注意)のエラーを出さないでおく設定
E_NOTICE(注意)は「この定数は定義されてないで~」みたいなエラーを出す。
よって、開発環境では出しておけばよいが、本番環境ではまず必要でない。
よって、「E_STRICT(2048)」と「E_DEPRECATED(8192)」に加えて、「E_NOTICE(8)」も出さないようにしたい。
その場合、「22527」から「8」を引いた、「22519」が設定すべき値や。
error_reporting関数に設定する
error_reporting関数は、引き数なしだと設定値を返し、引き数を入れると、その値を設定する。
よって、今、「E_NOTICE(8)」を外した「22519」を設定してみる。
<?php
ini_set( 'display_errors' , 1 );
error_reporting( 22519 );
echo $a;
?>
エラーメッセージが出ない。
一方、「E_NOTICE(8)」を加えた「22527」を設定する。
<?php
ini_set( 'display_errors' , 1 );
error_reporting( 22527 );
echo $a;
?>
そうすると、エラーが表示される。

なお、先頭のini_set( 'display_errors' , 1 );
は、エラーメッセージを表示する宣言。(ここを参照)
以上。