Non parsed header scripts are not able to log any errors or warnings to the errorlog, while (almost) the same non-nph script will generate errors and warnings for the same script. example: #!/usr/bin/perl -w use strict; $|=1; warn "me"; print "$ENV{SERVER_PROTOCOL} 204 No Content\n"; print "Server: $ENV{SERVER_SOFTWARE}\n"; print "Date: $date\n"; exit; will not log anything, while it should due to the warn in line 4.
Allegedly this scenario is handled by http://www.apache.org/~trawick/mod_cgi.c which handles the three I/O channels with the script in a more sane way, at least as unix-heads would see it.
Fixed on HEAD by extracting the relevant change from Jeff's mod_cgi.c (thanks Jeff!). http://cvs.apache.org/viewcvs.cgi/httpd-2.0/modules/generators/mod_cgi.c?r1=1.162&r2=1.163 Backport of recent mod_cgi changes to 2.0 is here: http://www.apache.org/~jorton/mod_cgi-2.0.diff