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



Заранее благодарю.

471   3  
PHP

3 ответов:

Это значение на самом деле маска растрового изображения, сумма констант.

Итак, 22527-это

  16384 E_USER_DEPRECATED
+
  4096  E_RECOVERABLE_ERROR
+
  etc...

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

Это значение является одной или несколькими из этих констант, побитово соединенных вместе.

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);

Comments

    Ничего не найдено.