Edited at

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

More than 1 year has passed since last update.


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

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 レベルのエラーを含む。