phpinfo的error_reporting 22527中的22527是什么

shi*_*hin 43 php phpinfo

在我的本地开发环境中,我使用PHP版本5.3.3-1ubuntu9.2.

现在,当我看到error_reporting时,值为22527.

什么是22527?

我检查了http://www.php.net/manual/en/errorfunc.constants.php,但我找不到这个号码.

谁能告诉我它是什么?

我需要将其更改为E_ALL | E_STRICT?

提前致谢.

Ger*_*umm 65

该值实际上是位图掩码,常量之和.

所以,22527是

  16384 E_USER_DEPRECATED
+
  4096  E_RECOVERABLE_ERROR
+
  etc...
Run Code Online (Sandbox Code Playgroud)

在你的情况下E_ALL & ~E_DEPRECATED,它会显示每个错误,除了E_DEPRECATED.

低于5.4的PHP版本也将排除E_STRICT错误(因为在该版本之前E_STRICT未包含E_ALL)

  • 只是指出,因为PHP 5.4.0`E_STRICT`现在再次成为`E_ALL`的一部分 (7认同)

Sal*_*n A 40

该值是按位计算的这些常量中的一个或多个.

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;
Run Code Online (Sandbox Code Playgroud)

输出:

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
Run Code Online (Sandbox Code Playgroud)