Что такое 22527 в отчете об ошибках 22527 phpinfo

в моем локальном dev env я использую PHP версии 5.3.3-1ubuntu9.2.

теперь, когда я вижу error_reporting, значение равно 22527.

Что 22527?

Я проверил http://www.php.net/manual/en/errorfunc.constants.php, но я не мог найти номер.

может кто-нибудь сказать мне, что это?

Мне нужно изменить его на E_ALL / E_STRICT ?

спасибо заранее.

3 ответов


это значение на самом деле растровые маски, сумма констант.

Итак, 22527 составляет

  16384 E_USER_DEPRECATED
+
  4096  E_RECOVERABLE_ERROR
+
  etc...

в вашем случае это E_ALL & ~E_DEPRECATED, он будет отображать все ошибки, за исключением E_DEPRECATED и E_STRICT (поскольку E_STRICT не включенными в E_ALL)


Это значение является одним или более из эти константы побитовые-ored вместе.

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

никогда не используйте числовое значение для установки отчетов об ошибках, как значение этого значения может измениться но значение констант (например, E_ALL, E_STRICT и т. д.), вероятно, не будет:

новый уровень error_reporting. Он принимает либо битовую маску, либо именованные константы. Использование именованных констант настоятельно рекомендуется для обеспечения совместимости будущих версий. По мере добавления уровней ошибок диапазон целых чисел увеличивается,таким образом, более старая целочисленная ошибка уровни не всегда будут вести себя так, как ожидалось.

(и обратите внимание, что с PHP 5.4 E_ALL теперь включает E_STRICT)

Если вы хотите самую строгую отчетность навсегда, вы можете установить error_reporting на очень большое количество, чтобы гарантировать(?) это вы будете сообщать обо всех ошибках навсегда :

использование констант PHP вне PHP, как в httpd.conf, не имеет смысла, так как в таких случаях целочисленные значения требуемый. И поскольку уровни ошибок будут добавлены с течением времени, максимальное значение (для E_ALL), скорее всего, изменится. Так что вместо E_ALL рассмотрите возможность использования большего значения для покрытия всех битовых полей отныне и в будущем, числовое значение, такое как 2147483647 (включает все ошибки, а не только E_ALL).

проверьте свой php.ini для значения error_reporting в формате читаемых человеком констант PHP. Функция phpinfo (), по-видимому, всегда показывает числовое значение чем показывать константы.

но лично я оставляю php.ini со значениями по умолчанию для отчетов об ошибках. Вместо этого я просто помещаю функцию отчетов об ошибках в верхней части любого PHP-скрипта, над которым я работаю, чтобы переопределить значения по умолчанию. например:

error_reporting(E_ALL | E_STRICT);