php标题之前的文本没有给出错误

时间:2015-06-09 15:14:59

标签: php header

我是开发新手,我正在尝试学习php。

为什么当我使用下面的代码时,重定向(通过标头语法)仍然在发生,即使内容已经在它之前输出了?

<script>
  (yourcode here)
  debugger;
  (next code to debug)
</script>

非常感谢提前

1 个答案:

答案 0 :(得分:0)

HTTP要求响应标头严格到达正文内容之前,如下所示:

HTTP/1.1 200 OK
Powered-By: PHP/7.0.0-20150527
Content-Type: text/html; charset=utf-8

<html><body>Hello world!</body></html>

为了使PHP符合该要求, PHP必须在准备发送任何正文内容的时刻发送所有累积标题。您的问题的答案取决于PHP何时准备好发送&#34;。

要解决这个问题,请查看您的output_buffering设置:

var_dump(ini_get('output_buffering'));

在我的机器上使用默认设置,返回4096according to the manual表示PHP将准备发送&#34;当累积了4096个字节时。

要使页面按预期运行(即发送标头),您需要输出足够的字节以超过output_buffering的设置。您可以通过减少输出缓冲设置或发出更多正文来实现,例如:

echo str_repeat('<div/>', 4096);

另见SO primer