Loading ...
Sorry, an error occurred while loading the content.

Outgoing content-length apparently 0

Expand Messages
  • Craig or Merikay MacKenna
    Hope this is the address to which to send a problem/question! Our Verio Virtual Private Server is FreeBSD-based with Apache 1.3.33. I ve installed mod-perl
    Message 1 of 1 , Apr 27, 2005
    • 0 Attachment
      Hope this is the address to which to send a problem/question!

      Our Verio "Virtual Private Server" is FreeBSD-based with Apache 1.3.33.
      I've installed mod-perl 1.29 and mod_gzip 1.3.19.2a, and revised our former
      CGI scripts to run as perl modules under the Apache API.

      They are operating fine, except for one residual problem.

      When a script builds a response, mod_gzip squawks in the error_log like
      this:
      ... [error] mod_gzip: EMPTY FILE [/tmp/_16777_106_7.wrk] in sendfile2
      ... [error] mod_gzip: Make sure all named directories exist and have ...

      The corresponding entry in access_log looks like this:
      ... "POST /contact HTTP/1.1" 200 0 or
      ... "GET /x/whoami.cgi HTTP/1.1" 200 0

      The zero outgoing length in the log entry agrees with mod_gzip's complaint,
      but in reality the correct body is going out to the browser (I was the
      browser user for both of the access_log cases above). The former case
      (contact) runs under mod_perl, while the latter runs under mod_cgi.

      Today I tried an approach to solving this, wherein I build up the whole body
      in a scalar $body, and then do a

      send_response('text/html');

      where send_response is:

      sub send_response {
      $r->header_out("Content-Length", length $body);
      $r->send_http_header(shift);
      if (!$r->header_only) {$r->print($body)}
      undef $body;
      }

      The problem still persists. So I searched our logs. The first "200 0" log
      entry for a script was seen before I installed mod_gzip, and after I
      followed the advice of the "Practical mod-perl" book, and moved all of the
      scripts from /usr/local/apache/cgi-bin to a new directory
      /usr/local/apache/perl. Before that the scripts had been running fairly
      correctly under mod_perl and Apache::Registry in .../cgi-bin, without
      showing any "200 0" log entries for scripts.

      None of the following changes in httpd.conf seem to affect the problem:
      PerlSendHeaders On/Off
      PerlSetupEnv On/Off
      Option +ExecCGI in the Location block of a script

      Finally I tried making a <Location /cgi-bin/contact.cgi> block in an attempt
      to get as close to the conditions under which the last script output with a
      non-zero length was seen. No help!

      Scripts that do a redirect using the same send_response routine as above,
      show log entries like "302 771", although $body contained just a few bytes.

      So my question is: what do I need to do, to make Apache hand off the output
      from the script to mod_gzip properly, and (far less important) show the
      proper length in the log?

      Thanks to anyone who can help,
      Craig MacKenna
      Los Gatos, CA
      408-353-5037
    Your message has been successfully submitted and would be delivered to recipients shortly.