Подтвердить что ты не робот

Что такое 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?

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

4b9b3361

Ответ 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);