我写了一个PHP程序,
我使用session_start()
和header()
函数,我知道在向客户端发送任何内容之前我应该使用此函数。没关系,但是对于测试我在使用header()之前用echo "test";
向客户端发送测试消息,但我没有得到任何错误和头功能没有任何问题!
在此前的PHP早期版本中,我会收到如下消息:
Warning: Cannot modify header information - headers already sent by (output started at /some/file.php:22) in /some/file.php on line 60
我不知道为什么我没有收到任何错误消息?!
我的php版本为5.3.1,error_reporting
位于E_ALL
答案 0 :(得分:1)
您没有看到错误,因为
一个。输出缓冲是打开的
湾服务器会忽略你的error_reporting函数,因为否则会指示其他内容
运行phpinfo();
并查看有关output buffering
和error_reporting
的内容。
答案 1 :(得分:0)
这可能是因为你写入一个输出缓冲区(ob_start),它实际上没有向客户端返回任何东西,直到你显式刷新缓冲区(ob_flush或ob_end_ *)或脚本结束。
在开始编写HTTP响应的正文部分后,您无法发送标头这一事实不是PHP而是HTTP协议限制,因此这也不是特定于版本的。
许多框架(如Zend Framework)使用输出缓冲区,因此开发人员无需关心订单。
答案 2 :(得分:0)
我发现了问题, 我不使用任何FrameWork。
问题是error_reporting('E_ALL');
我在我的程序的第一个上写了这段代码,所以PHP没有返回任何错误! 我删除了这一行,我得到了错误!
这是开玩笑,因为这行告诉PHP显示所有错误! 我不知道PHP为什么不显示任何错误。