【问题标题】:PHP Output buffering contains something before script startsPHP 输出缓冲在脚本启动之前包含一些内容
【发布时间】:2012-04-09 11:33:52
【问题描述】:

我有一个站点,我用

缓冲一些输出
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();包含

【问题讨论】:

  • 以前见过这个......你没有看到它,但那里有一些东西......删除文件并重新创建它......如果可能的话,使用另一个编辑器或只是记事本......
  • Headers already sent 相关,请参阅 hexeditor 和输出缓冲部分。

标签: php output-buffering


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    如果你给我们一些关于那些神秘数据的信息,事情会容易得多。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        我找到了:

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

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

        function print_something(){
        ob_start();
        
        echo some stuff...
        
        echo ob_get_clean();
        ob_end_clean(); // this was the bug! 
        }
        

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-03-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-07-07
          • 2013-09-19
          • 1970-01-01
          相关资源
          最近更新 更多