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