header() 错误在 PHP 中未显示



我写了一个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_reportingE_ALL

您看不到错误,因为
A. 输出缓冲已打开
B. 服务器忽略了你的error_reporting函数,因为其他东西会指示它运行phpinfo();,看看它在那里说了什么关于output buffering和关于error_reporting.

这可能是

可能的,因为您写入输出缓冲区 (ob_start),在您显式刷新缓冲区(ob_flush 或 ob_end_*)或脚本结束之前,该缓冲区实际上不会向客户端返回任何内容。

开始编写 HTTP 响应的正文部分后无法发送标头的事实不是 php,而是 HTTP 协议限制,因此这也不能特定于版本。

许多像Zend框架这样的框架都使用输出缓冲区,因此开发人员不需要关心顺序。

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

问题error_reporting('E_ALL');

我在第一个程序上编写了这段代码,所以 PHP 没有返回任何错误!我删除了这一行,我收到错误!

这是在开玩笑,因为这行对PHP说要显示所有错误!我不知道为什么PHP没有显示任何错误。

最新更新