web-dev-qa-db-ja.com

phpinfoのerror_reporting 22527の22527とは

私のローカル開発環境では、PHP Version 5.3.3-1ubuntu9.2。

Error_reportingが表示されると、値は22527です。

22527とは何ですか?

http://www.php.net/manual/en/errorfunc.constants.php をチェックしましたが、番号が見つかりませんでした。

誰がそれが何であるか教えてもらえますか?

E_ALLに変更する必要がありますか。 E_STRICT?

前もって感謝します。

42
shin

この値は、実際には ビットマップマスク 、定数の合計です。

したがって、22527は

  16384 E_USER_DEPRECATED
+
  4096  E_RECOVERABLE_ERROR
+
  etc...

あなたの場合、それはE_ALL & ~E_DEPRECATEDであり、E_DEPRECATEDを除くすべてのエラーを表示します。

5.4より前のPHPバージョンでは、E_STRICTエラーも除外されます(E_STRICTはそのバージョンの前のE_ALLに含まれていないため)

62
German Rumm

この値は、 これらの定数 bitwise-oredの1つ以上です。

phpinfo() は、通常、INIファイル内で使用される定数または速記の代わりに数値を表示します。値を定数にマップし直す例です。 :

<?php
$error_reporting_value = 22527;
$constants = array(
    "E_ERROR",
    "E_WARNING",
    "E_PARSE",
    "E_NOTICE",
    "E_CORE_ERROR",
    "E_CORE_WARNING",
    "E_COMPILE_ERROR",
    "E_COMPILE_WARNING",
    "E_USER_ERROR",
    "E_USER_WARNING",
    "E_USER_NOTICE",
    "E_STRICT",
    "E_RECOVERABLE_ERROR",
    "E_DEPRECATED",
    "E_USER_DEPRECATED",
    "E_ALL"
);
$included = array();
$excluded = array();
foreach ($constants as $constant) {
    $value = constant($constant);
    if (($error_reporting_value & $value) === $value) {
        $included[] = $constant;
    } else {
        $excluded[] = $constant;
    }
}
echo "error reporting " . $error_reporting_value . PHP_EOL;
echo "includes " . implode(", ", $included) . PHP_EOL;
echo "excludes " . implode(", ", $excluded) . PHP_EOL;

出力:

error reporting 22527
includes E_ERROR, E_WARNING, E_PARSE, E_NOTICE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING, E_USER_ERROR, E_USER_WARNING, E_USER_NOTICE, E_RECOVERABLE_ERROR, E_USER_DEPRECATED
excludes E_STRICT, E_DEPRECATED, E_ALL
39
Salman A

その値の意味は変化する可能性がある のように、数値を使用してエラー報告を設定しないでください。ただし、定数(E_ALL、E_STRICTなど)の意味はそうではありません。

新しいerror_reportingレベル。ビットマスクまたは名前付き定数のいずれかを取ります。将来のバージョンとの互換性を確保するために、名前付き定数の使用を強くお勧めします。エラーレベルが追加されると、整数の範囲が増加するため、そのため、古い整数ベースのエラーレベルは常に期待どおりに動作するとは限りません

(そしてPHP 5.4の時点で、E_ALLにはE_STRICTが含まれるようになりました)

いつまでも最も厳格なレポートが必要な場合は、error_reportingを非常に大きな数に設定して、 すべてのエラーを永久にレポートする を保証できます。

PHP httpd.confのようにPHPの外部の定数は有用な意味を持たないため、このような場合には整数値が必要です。エラーレベルは時間とともに追加されるため、最大値(E_ALLの場合)変更される可能性が高いため、E_ALLの代わりに、2147483647( E_ALLだけでなく、すべてのエラー)。

Php.iniで、人間が読めるPHP定数形式のerror_reportingの値を確認してください。phpinfo()関数は、定数を表示するのではなく、常に数値を表示します。

しかし、個人的には、エラー報告用のデフォルト値をphp.iniに残しています。代わりに、デフォルトをオーバーライドするために作業しているphpスクリプトの先頭にエラー報告機能を配置します。例えば。:

error_reporting(E_ALL | E_STRICT);
3
Buttle Butkus