我写了一个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_reporting
是E_ALL
你看不到的错误,因为
一个。 输出缓冲是上
湾 服务器会忽略你的error_reporting功能,因为别的指示它,否则运行phpinfo();
看看它说,有大约output buffering
和有关error_reporting
。
因为你写到输出缓冲器(ob_start),它实际上并不返回任何的客户端,直到你明确地刷新缓冲区(使用ob_flush或ob_end_ *)或脚本结束这是可能的。
你开始写你的HTTP响应的主体部分后,您不能发送头的事实并不是一个PHP而是HTTP协议的限制,所以这不能成为特定版本无论是。
像Zend框架使用输出缓冲器许多框架,以便开发人员并不需要关心的顺序。
我发现这个问题,我不使用任何框架。
这个问题是error_reporting('E_ALL');
我写了我的第一个程序的代码,所以PHP没有返回任何错误! 我删除了这条线,我得到的错误!
这是在开玩笑,因为这条线到PHP说来显示所有的错误! 我不知道为什么PHP不显示任何错误。