Что такое 22527 в error_reporting 22527 из phpinfo
В моем локальном dev env я использую PHP Version 5.3.3-1ubuntu9.2.
Теперь, когда я вижу error_reporting, значение равно 22527.
Что такое 22527?
Я проверил http://www.php.net/manual/en/errorfunc.constants.php, но я не смог найти номер.
Может ли кто-нибудь сказать мне, что это такое?
Мне нужно изменить его на E_ALL | E_STRICT?
Спасибо заранее.
Ответы
Ответ 1
Это значение фактически растровая маска, сумма констант.
Итак, 22527
16384 E_USER_DEPRECATED
+
4096 E_RECOVERABLE_ERROR
+
etc...
В вашем случае это E_ALL & ~E_DEPRECATED
, он отобразит каждую ошибку, кроме E_DEPRECATED
и E_STRICT
(так как E_STRICT
не включен в E_ALL
)
Ответ 2
Когда вы OR
две или более константы, определенные здесь, вы получите значение 22527
. Вот как вы его декодируете (если вам интересно):
<?php
$error_number = 22527;
$error_description = array( );
$error_codes = array(
E_ERROR => "E_ERROR",
E_WARNING => "E_WARNING",
E_PARSE => "E_PARSE",
E_NOTICE => "E_NOTICE",
E_CORE_ERROR => "E_CORE_ERROR",
E_CORE_WARNING => "E_CORE_WARNING",
E_COMPILE_ERROR => "E_COMPILE_ERROR",
E_COMPILE_WARNING => "E_COMPILE_WARNING",
E_USER_ERROR => "E_USER_ERROR",
E_USER_WARNING => "E_USER_WARNING",
E_USER_NOTICE => "E_USER_NOTICE",
E_STRICT => "E_STRICT",
E_RECOVERABLE_ERROR => "E_RECOVERABLE_ERROR",
E_DEPRECATED => "E_DEPRECATED",
E_USER_DEPRECATED => "E_USER_DEPRECATED",
E_ALL => "E_ALL"
);
foreach( $error_codes as $number => $description )
{
if ( ( $number & $error_number ) == $number )
{
$error_description[ ] = $description;
}
}
echo sprintf(
"error number %d corresponds to:\n%s",
$error_number,
implode( " | ", $error_description )
);
?>
Вывод:
error number 22527 corresponds to:
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
Ответ 3
НИКОГДА не используйте числовое значение, чтобы установить отчет об ошибках, поскольку значение значения этого значения может измениться, но значение констант (например, 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 script, над которым я работаю, чтобы переопределить значения по умолчанию. например:.
error_reporting(E_ALL | E_STRICT);