错误报告级别的数字值

时间:2010-09-21 08:12:25

标签: php

我正在检查我的PHP服务器的配置,我需要设置以下参数:

error_reporting设置为E_ALL & ~E_NOTICE

但是在我的服务器上设置了一个数值:

  

error_reporting 6135 6135

我想知道它的含义是什么,如果我真的需要改变它

感谢

6 个答案:

答案 0 :(得分:15)

Values用于错误报告

 E_RECOVERABLE_ERROR  4096 +
E_USER_NOTICE        1024 +
E_USER_WARNING        512 +
E_USER_ERROR          256 +
E_COMPILE_WARNING     128 +
E_COMPILE_ERROR        64 +
E_CORE_WARNING         32 +
E_CORE_ERROR           16 +
E_PARSE                 4 +
E_WARNING               2 +
E_ERROR                 1 +
                   = 6135

答案 1 :(得分:13)

来自page我们:

  • E_ALL在PHP中的值为30719 5.3.x,PHP 5.2.x中的61432047以前的<{p>

  • E_NOTICE的值为8

看起来您使用的是PHP 5.2.x

现在如果您执行E_ALL & ~E_NOTICE哪个是E_NOTICE的按位补码,然后是E_ALL的按位和,我们得到

6143 & (~8) = 6135

答案 2 :(得分:6)

错误标志是2个整数的幂,因此您可以使用位运算符组合它们。如果将其设置为E_ALL&amp; ~E_NOTICE它仍然会以整数结束。 6135值包含哪些标志取决于您的php版本。您可以使用按位和运算符检查其中是否包含标志,例如

if ((error_reporting() & E_NOTICE) == E_NOTICE) {
    echo "E_NOTICE is active";
}

答案 3 :(得分:2)

foreach(
    array('E_ALL', 'E_NOTICE', '~E_NOTICE', 'E_ALL&~E_NOTICE') 
    as $s) {
    eval("\$v=$s;");
    printf("%20s = dec %10u = bin %32b\n", $s, $v, $v);
}

结果

           E_ALL = dec       6143 = bin                    1011111111111
        E_NOTICE = dec          8 = bin                             1000
       ~E_NOTICE = dec 4294967287 = bin 11111111111111111111111111110111
 E_ALL&~E_NOTICE = dec       6135 = bin                    1011111110111

答案 4 :(得分:1)

注意,error_reporting(-1);将报告所有和任何PHP错误。

答案 5 :(得分:0)

error_reporting 6135不会记录运行时通知,因此最好使用

error_reporting(E_ALL);

接着是

ini_set('display_errors', '0');

这将记录包括运行时通知在内的所有错误,但是在浏览器中显示pevent。这可以在任何PHP版本中使用。