PHP:PHP错误/警告/通知的双重输出

如果我执行以下脚本:

<?php
error_reporting(E_ALL);
trigger_error('test notice', E_USER_NOTICE);
die('end of script');

我得到以下输出:

<br />
<b>Notice</b>:  test notice in <b>path/to/script/test.php</b> on line <b>3</b><br />
end of scriptPHP Notice:  test notice in path/to/script/test.php on line 3

该脚本在IIS8上使用PHP版本5.4.19执行。

返回的http状态码是200。

在php.ini文件中,“display_errors”设置为“On”,“error_reporting”设置为“E_ALL”。 所以脚本的第一行只是为了澄清。

该行为与所有错误报告常量(E_ERROR,E_WARNING等)相同。

有人知道通知的第二个输出来自哪里吗? 特别是如何摆脱它?


如果你同时设置

error_reporting(E_ALL);
ini_set('display_errors', 1);

错误将会增加一倍:

PHP注意:未定义的变量:在第8行的/path/to/script.php中进行测试

注意:未定义的变量:在第8行的/path/to/script.php中测试

尝试关闭一个或另一个或设置一个自定义错误处理程序。


脚本中的第一行

error_reporting(E_ALL);
将PHP设置为报告所有错误,并在您的PHP配置中启用display_errors指令,该指令设置PHP将错误输出到屏幕上,然后无需重复输出的第二行。


为了解决这个问题,我不得不在IIS中更改站点的基本设置:“连接为”与IIS_USER和PHP错误消息的双重输出消失了! 我仍然不知道为什么,但至少它是有效的。

链接地址: http://www.djcxy.com/p/58927.html

上一篇: PHP: double output of php errors / warnings / notices

下一篇: ErrorHandling php