Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php错误报告-分别使用0和1禁用然后启用将不起作用_Php_Error Handling - Fatal编程技术网

php错误报告-分别使用0和1禁用然后启用将不起作用

php错误报告-分别使用0和1禁用然后启用将不起作用,php,error-handling,Php,Error Handling,PHP代码段: <?php error_reporting(0); $a; echo ' a = '.$a.'<br>'; error_reporting(1); echo ' b= '.$b; ?> 没有任何通知 我希望错误报告(1)能够显示错误。但是如果我使用error\u reporting(E\u ALL),它会显示未定义变量b的通知 问题是: 1) 如果参数为0或false则错误被抑制,那么为什么1或true将以相反的方式工作 2) 文档中提到的

PHP代码段:

 <?php
error_reporting(0);
$a;

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



error_reporting(1);

echo ' b= '.$b;

?>
没有任何通知

我希望
错误报告(1)
能够显示错误。但是如果我使用
error\u reporting(E\u ALL)
,它会显示未定义变量
b
的通知

问题是:

1) 如果参数为0或
false
则错误被抑制,那么为什么1或
true
将以相反的方式工作

2) 文档中提到的0或
false
可以作为参数传递,而我发现
E_ALL
可以作为参数使用?

期望
$level
表示不同的级别。要启用有关未定义变量的通知,请将
E_ALL
E_STRICT
组合使用:

error_reporting(E_ALL | E_STRICT);
(在PHP5.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时,上面的示例将显示一个通知。


error\u reporting(1)
error\u reporting(E\u error)
等效,这意味着您将只从PHP激活错误报告
在您的情况下,您必须编写
error\u reporting(E\u NOTICE)
以查看来自PHP的消息
您可以结合多种类型的报告
错误报告(E|u error | E|u WARNING | E|u PARSE | E|u NOTICE)

要重新激活所有类型的错误和警告,您可以编写
错误报告(-1)


希望它有帮助

只是找不到我在作品中提到的两个问题的答案。只需按照我提供的链接进行操作。我还解释了为什么你可以通过0。如果通过
false
,PHP将自动将值转换为
0
。我找不到为什么
error\u reporting(1)
不起作用的答案,php文档站点中的
0
false
被称为参数。你知道什么是位字段吗?让我理解这个术语。我提到了两个问题,即1和2,无法理解这些问题的答案。
ini_set('display_errors', 1); 

error_reporting(0);
echo $a; 

error_reporting(E_ALL | E_STRICT);
echo $b;