PHP输出缓冲在脚本启动之前包含一些内容

时间:2012-04-09 11:33:52

标签: php output-buffering

我有一个网站,我用

缓冲一些输出
ob_start();
... 

它工作正常,直到今天我将debian从较旧的 php5.3 更新为最新的 php5.3.3-7 + squeeze8
现在我有时在输出缓冲区中有一些东西,然后我第一次调用它

请不要回答

之类的事情
  

“必须在发送任何输出之前调用标头。”   (我知道,我在输出缓冲区工作很多)

当我设置一个额外的ob_get_clean();在我的脚本的第一行,它工作

<?
ob_get_clean();
似乎,像php正在预先创建一些输出 如果我把第一行放在

<? print_r(ob_get_clean()); ?>

然后我看到缓冲区中已经有一个空字符串:

  

“”

在其他所有页面上都没有,有ob_get_clean();包含

  

4 个答案:

答案 0 :(得分:0)

你可能在某个地方<?php面前有一些“”吗?或错误的文件编码通常会发出某种性质,检查您的文件并包含文件。

答案 1 :(得分:0)

  

现在我在调用它之前有时会在输出缓冲区中有一些东西   第一次

如果您向我们提供有关该神秘数据的一些信息,那将会容易得多。

答案 2 :(得分:0)

也许是BOM字符的情况? 更多信息here

答案 3 :(得分:0)

我找到了它:

我前面没有看不见的角色,这是不同的东西:我曾多次调用ob_end_clean():

这是我的代码,在我调用的函数中:

function print_something(){
ob_start();

echo some stuff...

echo ob_get_clean();
ob_end_clean(); // this was the bug! 
}

看起来,您可以清除主输出缓冲区;)