[PHP] error_reportingで使用するエラーレベルのビットマスクを調べる方法

PHPでエラーラベルを設定する方法

PHPコードの中で指定する場合
error_reporting(E_ALL | E_STRICT);

PHP.iniで指定する場合
error_reporting  =  E_ALL  | E_STRICT;

ここまでは誰でもできると思います。

では問題です。

Apacheのバーチャルホスト単位でエラーレベルを変更するには?

答え
.htaccess または httpd.conf などに記述します。

しかしここでやっかいな問題があります。
.htaccessやhttpd.confでエラーレベルを指定する場合は、整数値で指定しないといけないのです。

php_value error_reporting 30719

この"30719"などの整数値はどうやって調べればいいのでしょうか?

一応マニュアルを見れば整数値の一覧が書いてあります。
E_NOTICEが "8" で、E_STRICTが "2048" といった具合です。

やっかいなのは、E_ALLの値がPHPのバージョンによって異なるということです。

例えば,
PHP5.1のE_ALLは "2047" です。
PHP5.2のE_ALLは "6143" です。

つまり、
「"E_ALL | E_STRICT"の整数値は何か?」
という問いの答えは、
「それはあなたのPHPのバージョンによって異なる」
ということになります。

さあ困りましたね。

エラーレベルの整数値を調べる方法

ワンライナーを使って、整数値を直接表示してみましょう。

PHP 5.1の場合
$ php -r 'echo E_ALL,"\n";'
2047
$ php -r 'echo E_ALL | E_STRICT,"\n";'
4095

PHP 5.2の場合
$ php -r 'echo E_ALL,"\n";'
6143
$ php -r 'echo E_ALL | E_STRICT ,"\n";'
8191

これで、いちいち整数値を覚えなくて済みますね!
Enjoy!
カテゴリ: