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_ALL
和E_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时,上面的示例将显示一个通知。