什么是phpinfo的error_reporting 22527中的22527

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

现在,当我看到error_reporting,值是22527。

什么是22527?

我查了http://www.php.net/manual/en/errorfunc.constants.php ,但是找不到数字。

谁能告诉我这是什么?

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

提前致谢。

这个值实际上是位图掩码 ,一个常量的总和。

那么,22527是

  16384 E_USER_DEPRECATED + 4096 E_RECOVERABLE_ERROR + etc... 

在你的情况下,它是E_ALL & ~E_DEPRECATED ,它将显示每个错误,除了E_DEPRECATEDE_STRICT (因为E_STRICT不包括在E_ALL

当你在这里定义了两个或更多的常量时,你得到的值是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 

切勿使用数字值设置错误报告,因为该值的含义可能会改变,但常量的含义(如E_ALL,E_STRICT等)可能不会:

新的error_reporting级别。 它需要一个位掩码或命名常量。 强烈build议使用命名常量来确保未来版本的兼容性。 随着错误级别的增加,整数范围增加, 所以较老的基于整数的错误级别将不总是如预期的那样工作

(并注意,从PHP 5.4开始,E_ALL现在包含E_STRICT)

如果你想要永远和永远的最严格的报告,你可以设置error_reporting到一个非常大的数字,以保证(?), 你将永远报告所有的错误 :

在PHP之外使用PHP常量(如httpd.conf中的常量)将没有用处,因此在这种情况下,需要整数值。 而且由于错误级别会随着时间而增加,所以最大值(对于E_ALL)可能会改变。 因此,代替E_ALL 考虑使用更大的值来覆盖所有位字段,从现在开始到未来,数字值如2147483647 (包括所有错误,而不仅仅是E_ALL)。

以可读的PHP常量格式检查php.ini中的error_reporting值。 phpinfo()函数似乎总是显示数值而不是显示常量。

但是,我个人使用默认值php.ini来报错。 相反,我只是把错误报告function放在我正在工作的任何PHP脚本的顶部来覆盖默认值。 例如:

 error_reporting(E_ALL | E_STRICT);