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}}作为参数?
答案 0 :(得分:0)
error_reporting()
期待a bit field parameter $level
代表各种error_reporting options。要启用有关未定义变量的通知,您需要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时,上面的示例将显示通知。
答案 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)
希望它有所帮助