coar 97/06/12 08:24:04
Modified: htdocs/manual/misc FAQ.html
Log:
Clean up "premature end of headers" FAQ and add additional
(and more common) cause description.
Revision Changes Path
1.71 +33 -12 apache/htdocs/manual/misc/FAQ.html
Index: FAQ.html
===================================================================
RCS file: /export/home/cvs/apache/htdocs/manual/misc/FAQ.html,v
retrieving revision 1.70
retrieving revision 1.71
diff -C3 -r1.70 -r1.71
*** FAQ.html 1997/06/12 11:29:11 1.70
--- FAQ.html 1997/06/12 15:24:00 1.71
***************
*** 15,21 ****
<!--#include virtual="header.html" -->
<H1 ALIGN="CENTER">Apache Server Frequently Asked Questions</H1>
<P>
! $Revision: 1.70 $ ($Date: 1997/06/12 11:29:11 $)
</P>
<P>
The latest version of this FAQ is always available from the main
--- 15,21 ----
<!--#include virtual="header.html" -->
<H1 ALIGN="CENTER">Apache Server Frequently Asked Questions</H1>
<P>
! $Revision: 1.71 $ ($Date: 1997/06/12 15:24:00 $)
</P>
<P>
The latest version of this FAQ is always available from the main
***************
*** 569,595 ****
<P>
It means just what it says: the server was expecting a complete set of
HTTP headers (one or more followed by a blank line), and didn't get
! them. The most common cause of this (aside from people not
! outputting the required headers at all) a result of an interaction
! with perl's output buffering. To make perl flush its buffers
! after each output statement, insert the following statements before your
! first <CODE>print</CODE> or <CODE>write</CODE> statement:
</P>
<P>
<DL>
! <DD><CODE>$cfh = select (STDOUT);<BR>
! $| = 1;<BR>
! select ($cfh);</CODE>
</DD>
</DL>
</P>
<P>
This is generally only necessary when you are calling external
programs from your script that send output to stdout, or if there will
! be along delay between the time the headers are sent and the actual
content starts being emitted. To maximise performance, you should
! turn buffering back <EM>on</EM> (with <CODE>$| = 0</CODE> or the
! equivalent) after the statements that send the headers.
<P>
If your script isn't written in Perl, do the equivalent thing for
whatever language you <EM>are</EM> using (<EM>e.g.</EM>, for C, call
--- 569,616 ----
<P>
It means just what it says: the server was expecting a complete set of
HTTP headers (one or more followed by a blank line), and didn't get
! them.
! </P>
! <P>
! The most common cause of this problem is the script dying before
! sending the complete set of headers, or possibly any at all, to the
! server. To see if this is the case, try running the script standalone
! from an interactive session, rather than as a script under the server.
! If you get error messages, this is almost certainly the cause of the
! "premature end of script headers" message.
! </P>
! <P>
! The second most common cause of this (aside from people not
! outputting the required headers at all) is a result of an interaction
! with Perl's output buffering. To make Perl flush its buffers
! after each output statement, insert the following statements around
! the <CODE>print</CODE> or <CODE>write</CODE> statements that send your
! HTTP headers:
</P>
<P>
<DL>
! <DD><CODE>{<BR>
! local ($oldbar) = $|;<BR>
! $cfh = select (STDOUT);<BR>
! $| = 1;<BR>
! #<BR>
! # print your HTTP headers here<BR>
! #<BR>
! $| = $oldbar;<BR>
! select ($cfh);<BR>
! }</CODE>
</DD>
</DL>
</P>
<P>
This is generally only necessary when you are calling external
programs from your script that send output to stdout, or if there will
! be a long delay between the time the headers are sent and the actual
content starts being emitted. To maximise performance, you should
! turn buffer-flushing back <EM>off</EM> (with <CODE>$| = 0</CODE> or the
! equivalent) after the statements that send the headers, as displayed
! above.
! </P>
<P>
If your script isn't written in Perl, do the equivalent thing for
whatever language you <EM>are</EM> using (<EM>e.g.</EM>, for C, call