カテゴリー:
エラーメッセージ
閲覧数:546 配信日:2016-08-10 07:55
error_reportingの設定
エラーレベルを示す文字列または値で指定
・ビット演算子(|→OR、&→AND、^→XOR、~・!→NOT)を用いて組み合わせた指定や特定エラーだけを出なくするような指定も可能
phpのオプションでビット演算を使う場合
下記の設定は E_ALL に E_STRICT が含まれるかどうかで変わります。
error_reporting(E_ALL &~ E_STRICT);
error_reporting(E_ALL ^ E_STRICT);
例えば E_ALL ^ E_NOTICE は E_ALL に E_NOTICE が含まれるので E_ALL から E_NOTICE を引いた値(E_ALL &~ E_NOTICE と同じ)になり E_ALL ^ E_STRICT は E_ALL に E_STRICT が含まれないので E_ALL | E_STRICT と同じ値になります。
php6 から E_ALL が E_STRICT を含むらしいので注意が必要です。
よって error_reporting に排他的論理和を使うのをやめることをお勧めします
error_reporting(E_ALL &~ E_STRICT);
error_reporting(E_ALL ^ E_STRICT);
例えば E_ALL ^ E_NOTICE は E_ALL に E_NOTICE が含まれるので E_ALL から E_NOTICE を引いた値(E_ALL &~ E_NOTICE と同じ)になり E_ALL ^ E_STRICT は E_ALL に E_STRICT が含まれないので E_ALL | E_STRICT と同じ値になります。
php6 から E_ALL が E_STRICT を含むらしいので注意が必要です。
よって error_reporting に排他的論理和を使うのをやめることをお勧めします
一覧
ビット値 | 2進数 | 設定 | 報告(出力)するエラー内容 | 簡易計算(実際はビット処理) |
---|---|---|---|---|
0 | - | 0 | なし(全てのエラー出力をオフにする) | - |
6143 | 0001 0111 1111 1111 | E_ALL | E_STRICTとE_DEPRECATEDを除いたすべてのエラー定数のビットをもつ定数 | - |
6143 | 0001 0111 1111 1111 | E_ALL &~ E_STRICT | E_STRICTとE_DEPRECATED以外のエラー。E_ALLにE_STRICTは含まれていないので、引けない。あるいは、「何もない」を引くので、結果、E_ALLと同じになる | - |
2048 | 0000 1000 0000 0000 | E_STRICT | - | - |
8191 | 0001 1111 1111 1111 | E_ALL ^ E_STRICT | DEPRECATED 以外のエラー | E_ALL値「6143」+E_STRICT値「2048」 |
8 | 0000 0000 0000 1000 | E_NOTICE | - | - |
6135 | 0001 0111 1111 0111 | E_ALL &~ E_NOTICE | 「E_NOTICE」、「E_STRICT」、「E_DEPRECATED」以外のエラー。E_ALL から E_NOTICE だけを NOT AND でマスク | E_ALL値「6143」+(-E_NOTICE値「8」) |
6135 | 0001 0111 1111 0111 | E_ALL ^ E_NOTICE | 「E_NOTICE」、「E_STRICT」、「E_DEPRECATED」以外のエラー。※E_NOTICEは、E_ALLの中に含まれているため | E_ALL値「6143」+(-E_NOTICE値「8」) |