0

我有一个站点,我在其中缓冲一些输出

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

4 回答 4

0

我找到了:

我前面没有隐形字符,这是不同的:我调用 ob_end_clean() 一次太多了:

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

function print_something(){
ob_start();

echo some stuff...

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

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

于 2012-04-14T01:06:11.107 回答
0

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

于 2012-04-09T11:35:53.303 回答
0

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

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

于 2012-04-09T11:36:45.537 回答
0

也许是BOM字符的情况?更多信息在这里

于 2012-04-09T11:40:32.820 回答