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


php error_reporting- disabling then enabling with 0 and 1 respectively does not work

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站点的文档中哪里提到0或false可以作为参数传递,而我在这里可以发现E_ALL可以作为参数使用?


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)
希望它能帮助

error_reporting()需要一个位字段参数$level,它表示各种error_reporting选项。要启用关于未定义变量的通知,您需要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时,上面的示例将显示一个通知。