PHP output_buffering开/关问题

时间:2010-12-09 13:43:10

标签: php

我用output_buffering = On创建了一个PHP应用程序。

现在,如果我output_buffering = Off,那么我会收到以下错误

"Cannot modify header information - headers already sent by ".

如何删除此错误?

如果我使用output_buffering = Off在实际网站上传应用程序,可能会有什么缺点?

4 个答案:

答案 0 :(得分:0)

在任何输出进入浏览器之前发送标题

header('Foo: bar');
echo "foo";

答案 1 :(得分:0)

如果关闭输出缓冲,则在向客户端发送任何数据(即使用echo或其他输出函数)后,不允许发送任何其他标题(例如,这包括cookie) )。

您可以使用headers_sent()检查开始向客户端输出数据的位置。

答案 2 :(得分:0)

确保所有标题('')标记位于脚本顶部,无空格!

EG:

<?php
header('type of header');
?>

如果您真的需要在页面下方进一步操作,可以在脚本顶部调用ob_start()。在脚本的末尾调用ob_end_flush()。

答案 3 :(得分:0)

From PHP Tag Wiki:

  

Q值。 &#34;标题已经发送......&#34;
  A.在您自己调用header()之前,您正在输出内容并触发PHP的默认内容类型:text / html标头。有几种方法可以实现,检查杂散回声或打印,标签之前和之后的空格,或者可能是Unicode BOM。考虑使用输出缓冲。使用许多脚本,不需要包含结尾?&gt;并且通过删除结尾容易解决问题?&gt;来自您文件的标记。

There is also a myriad of duplicates for this.