报头()错误在PHP中未示出(header() error not shown in php)

2019-08-03 02:04发布

我写了一个PHP程序,我用session_start()header()函数,我知道我我送什么给客户之前,应该使用这个功能。 它的确定,但对于测试我发送一个测试邮件客户端与echo "test"; 之前使用header()函数,但没有任何问题,我没有得到任何错误和头功能的工作!

在此时PHP以前的版本,我将有一个像消息:

Warning: Cannot modify header information - headers already sent by (output started at /some/file.php:22) in /some/file.php on line 60

我wan't知道为什么我没有得到任何错误消息?!

我的PHP版本是5.3.1,并error_reportingE_ALL

Answer 1:

你看不到的错误,因为
一个。 输出缓冲是上
湾 服务器会忽略你的error_reporting功能,因为别的指示它,否则运行phpinfo(); 看看它说,有大约output buffering和有关error_reporting



Answer 2:

因为你写到输出缓冲器(ob_start),它实际上并不返回任何的客户端,直到你明确地刷新缓冲区(使用ob_flush或ob_end_ *)或脚本结束这是可能的。

你开始写你的HTTP响应的主体部分后,您不能发送头的事实并不是一个PHP而是HTTP协议的限制,所以这不能成为特定版本无论是。

像Zend框架使用输出缓冲器许多框架,以便开发人员并不需要关心的顺序。



Answer 3:

我发现这个问题,我不使用任何框架。

这个问题是error_reporting('E_ALL');

我写了我的第一个程序的代码,所以PHP没有返回任何错误! 我删除了这条线,我得到的错误!

这是在开玩笑,因为这条线到PHP说来显示所有的错误! 我不知道为什么PHP不显示任何错误。



文章来源: header() error not shown in php