CGI script runs on its own process. mod-perl basically wraps CGI script into apache process, that is why its output is automatically going to Apache log.
On Mon, May 13, 2024 at 1:53 AM Steven Haigh via modperl < modperl@perl.apache.org> wrote: > Hi all, > > I'm playing around with mod_perl on apache on docker - and now I've > finally got all the module issues sorted, I'm trying to figure out why > when using mod_perl, the output of scripts ends up in the apache logs. > > The following configuration works, and the output of shelled scripts > works as expected: > > <Location /> > DirectoryIndex index.pl index.html > AddHandler cgi-script .pl > Options +Indexes +FollowSymLinks +ExecCGI > Require all granted > </Location> > > If I change this to use mod_perl, all output from scripts run in web > pages ends up in the apache log: > > <Location /> > DirectoryIndex index.pl index.html > AddHandler perl-script .pl > Options +Indexes +FollowSymLinks +ExecCGI > Require all granted > </Location> > > The perl code I'm using in the web page is as follows: > my $cmd = "/bin/stdbuf"; > my @args = qw@ -o1 -e1 /usr/bin/speedtest-cli@; > > print '<pre class="alert">'; > my $pid = open3(0, \*READER, 0, $cmd, @args); > while ( my $output = <READER> ) { > print $output; > } > print "Speed test complete.</pre>"; > waitpid $pid,0; > > Does anyone have any clues as to why STDOUT would end up in the apache > log and not in the web page being served when using perl-script as the > handler? > > -- > Steven Haigh > > 📧 net...@crc.id.au > 💻 https://crc.id.au > > >