PHPのエラー表示設定について

  • 6
    いいね
  • 0
    コメント

エラー表示/非表示の設定

PHPファイルで設定する(1)

<?php
// エラーを出力する
ini_set('display_errors', "On");
?>

PHPファイルで設定する(2)

<?php
// エラーを出力する
ini_set( 'display_errors', 1 );
?>

httpd.confや.htaccessで設定する

php_flag display_errors off

php.iniで設定する

display_errors = Off

エラー表示レベルの設定

PHPファイルで設定する(1)

<?php
error_reporting(E_ALL & ~ E_DEPRECATED & ~ E_USER_DEPRECATED & ~ E_NOTICE);
?>

PHPファイルで設定する(2)

<?php
ini_set('error_reporting', E_ALL);
?>

httpd.confや.htaccessで設定する

php_value "error_reporting" "E_ALL & ~E_NOTICE & ~E_DEPRECATED"

php.iniで設定する

error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED

よく設定するエラー表示レベル

E_NOTICE(注意メッセージ)以外の全てのエラーを表示する。

error_reporting = E_ALL & ~E_NOTICE

E_NOTICE(注意メッセージ)とE_DEPRECATED(推奨エラー)は表示しない。

error_reporting = E_ALL & ~ E_DEPRECATED & ~ E_USER_DEPRECATED & ~ E_NOTICE

致命的なエラーのみ表示する。

error_reporting = E_COMPILE_ERROR | E_RECOVERABLE_ERROR | E_ERROR | E_CORE_ERROR

実行時エラーのみ表示する。

error_reporting = E_ERROR | E_WARNING | E_PARSE

実行時エラー+注意メッセージ

error_reporting = E_ERROR | E_WARNING | E_PARSE | E_NOTICE

エラー表示レベルの書き方と意味

よくある設定の「E_NOTICE 以外の全てのエラーを表示する」は...

error_reporting = E_ALL & ~E_NOTICE

ビットで表すと...

0111 1111 1111 1111 and not( 0000 0000 0000 1000 )

notを反転すると...

0111 1111 1111 1111 and 1111 1111 1111 0111

andで統合(両方1の場合だけ1に)すると...

0111 1111 1111 0111

10進法に変換すると...

32759

つまり以下はいずれも同じ意味。

error_reporting = E_ALL & ~E_NOTICE
error_reporting = 32759
error_reporting = E_ALL ^ E_NOTICE

詳しくはPHPマニュアルのビット演算子を確認してください。

PHPのビット演算子

エラーレベルの定数

エラーレベルの定数は以下で設定されています。

定数 bit エラーレベル
E_ERROR 1 0000 0000 0000 0001 実行時の重大なエラー。復帰できないエラー。
E_WARNING 2 0000 0000 0000 0010 実行時の(致命的ではない)警告。
E_PARSE 4 0000 0000 0000 0100 コンパイル時のパースエラー。
E_NOTICE 8 0000 0000 0000 1000 注意メッセージ。
E_CORE_ERROR 16 0000 0000 0001 0000 PHPの初期始動時点での致命的なエラー。
E_CORE_WARNING 32 0000 0000 0000 0001 PHPの初期始動時点での(致命的ではない)警告。
E_COMPILE_ERROR 64 0000 0000 0100 0000 コンパイル時の致命的なエラー。
E_COMPILE_WARNING 128 0000 0000 1000 0000 コンパイル時の警告(致命的ではない)。
E_USER_ERROR 256 0000 0001 0000 0000 trigger_error()関数で発行されるE_ERROR(重大エラー)。
E_USER_WARNING 512 0000 0010 0000 0000 trigger_error()関数で発行されるE_WARNING(警告)。
E_USER_NOTICE 1024 0000 0100 0000 0000 trigger_error()関数で発行されるE_NOTICE(注意)。
E_STRICT 2048 0000 1000 0000 0000 互換性を維持するために非推奨とされる記述。PHP 5 以上、7 未満
E_RECOVERABLE_ERROR 4096 0001 0000 0000 0000 キャッチできる致命的なエラー。PHP 5.2.0 以上
E_DEPRECATED 8192 0010 0000 0000 0000 将来のバージョンで動作しなくなる非推奨コード。PHP 5.3.0 以上
E_USER_DEPRECATED 16384 0100 0000 0000 0000 trigger_error()関数で発行されるE_DEPRECATED(非推奨コード)。
E_ALL(PHP 5.2.0未満) 2047 0000 0111 1111 1111 サポートされる全てのエラーと警告。E_STRICT レベルのエラーは除く。
E_ALL(PHP 5.2.x) 6143 0001 0111 1111 1111
E_ALL(PHP 5.3.x) 30719 0111 0111 1111 1111
E_ALL(PHP 5.4.x) 32767 0111 1111 1111 1111 サポートされる全てのエラーと警告。E_STRICT レベルのエラーを含む。