什么是 phpinfo 的 error_reporting 22527 中的 22527

php
2022-08-30 10:52:33

在我的本地开发环境中,我使用PHP版本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_DEPRECATEDE_DEPRECATED

低于5.4的PHP版本也将排除错误(因为该版本之前不包含错误)E_STRICTE_STRICTE_ALL


答案 2

此值是按位或按位排列在一起的这些常量中的一个或多个。

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

推荐