"headers already sent" error depending on output length?

I have a script which outputs mysql cell data. The "content" cell contains text output, which is of varied length.

When the contents of the "content" cell are small (lets say, a few lines of text), everything works fine. However, when the output reaches several paragraphs or more, I get the 'headers already sent' error.

Does it depend on the output length? Where can I read more about it? The answers I've found on SO mention nothing of such output length-dependency.

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

If the size of the 'content' output is large, the script produces the following error:

PHP Warning: Cannot modify header information - headers already sent by (output started at /home/mantas/htdocs/asm/article.php:46) in /home/mantas/htdocs/asm/include/comments_class.php on line 56


PHP will buffer output if you want it to. You can control this programmatically with ob_start() , etc. However, there is a further option to set output buffering on in php.ini.

Setting output_buffering=on enables it, while setting output_buffering=4096 will set a limit to the buffer size. phpinfo() should tell you if this is enabled, and what the buffer size is.

The PHP reference is here


The "headers already send" warning means, you modify the http headers somewhere in your code after you send output to the Client(ie with echo , whitespaces, etc..).

This warning itself has nothing to do with the content length.

There are more methods, wich modify the headers:

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

    上一篇: 为什么在PHP中使用输出缓冲?

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