php error_reporting-禁用然后分别使用0和1启用不起作用

时间:2014-10-05 08:45:39

标签: php error-handling

PHP代码段:

 <?php
error_reporting(0);
$a;

echo ' a = '.$a.'<br>';



error_reporting(1);

echo ' b= '.$b;

?>

,输出是

a =
b= 

没有任何通知。

我希望error_reporting(1)可以显示错误。但是,如果我改为使用error_reporting(E_ALL),则会显示未定义变量b的通知;

问题是:

1)如果参数为0或false则会出现错误,那么为什么1或true不会以相反的方式工作?

2)在PHP site的文档中提到0或false可以作为参数传递,而我可以找到可以使用E_ALL的{​​{3}}作为参数?

2 个答案:

答案 0 :(得分:0)

error_reporting()期待a bit field parameter $level代表各种error_reporting options。要启用有关未定义变量的通知,您需要E_ALLE_STRICT的组合:

error_reporting(E_ALL | E_STRICT);

(从PHP 5.4开始,您可以省略E_STRICT,因为它包含在E_ALL中。使用整数0只表示您已禁用所有选项。

根据您的ini设置,您可能还希望启用错误显示 - 进行调试,在生产时禁用它:

ini_set('display_errors', 1);

示例:

ini_set('display_errors', 1); 

error_reporting(0);
echo $a; 

error_reporting(E_ALL | E_STRICT);
echo $b;

当您尝试访问未定义的$ b时,上面的示例将显示通知。

答案 1 :(得分:0)


对于error_reporting(1)error_reporting(E_ERROR)是公平的,这意味着您只会激活PHP的错误报告 在您的情况下,您必须编写error_reporting(E_NOTICE)以查看来自PHP的消息 您可以结合多种类型的报告error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE)
要重新激活所有类型的错误和警告,您可以写error_reporting(-1)
希望它有所帮助