PHPで表示させるエラーの種類を選択 (error_reporting)

前のページで、エラーの表示/非表示を切り替える設定をした。

ここでやるのは、「表示する場合、表示するエラーの種類を選択する」設定。

以下のコードを実行してみる。

<?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;

?>

そうすると、エラーが表示される。

error020

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

以上。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA