“头已发送”错误取决于输出长度?

我有一个输出mysql单元格数据的脚本。 “内容”单元格包含文本输出,其长度各不相同。

当“内容”单元格的内容很小(可以说,几行文字)时,一切正常。 但是,当输出达到多个段落或更多时,我会收到'标题已发送'错误。

它取决于输出长度吗? 我在哪里可以阅读更多关于它的内容 我在SO上找到的答案没有提到这种输出长度依赖性。

 44:   echo "
 45:       <p>".$article['content']."</p>
 46:   ";

如果“内容”输出的大小很大,则脚本会产生以下错误:

PHP警告:无法修改标头信息 - 已在第56行的/home/mantas/htdocs/asm/include/comments_class.php(由/home/mantas/htdocs/asm/article.php:46开始的输出)发送的标头


如果你愿意,PHP会缓冲输出。 你可以通过ob_start()等程序来控制它。但是,还有一个选项可以在php.ini中设置输出缓冲。

设置output_buffering=on启用它,而设置output_buffering=4096将设置缓冲区大小的限制。 phpinfo()应该告诉你这是否启用,以及缓冲区大小是多少。

PHP的参考在这里


“头文件已发送”警告意味着,在将输出发送到客户端(即使用echo ,whitespaces等)后,您可以在代码中的某处修改http头。

此警告本身与内容长度无关。

有更多的方法,修改头文件:

  • header / header_remove
  • session_start / session_regenerate_id
  • setcookie / setrawcookie
  • 链接地址: http://www.djcxy.com/p/34683.html

    上一篇: "headers already sent" error depending on output length?

    下一篇: PHP Header issue with ob