Steven, how do you put your script under the mod-perl environment? What is your httpd.conf file? Thx.
On Mon, May 13, 2024 at 10:00 PM Steven Haigh via modperl < modperl@perl.apache.org> wrote: > I wonder if perhaps I haven't been clear in the problem. > > In the provided code example: > my $cmd = "/bin/stdbuf"; > my @args = qw@ -o1 -e1 /usr/bin/speedtest-cli@; > > print '<pre class="alert">'; <-- appears in the HTML output. > my $pid = open3(0, \*READER, 0, $cmd, @args); > while ( my $output = <READER> ) { > print $output; <-- This never outputs anything. > } > print "Speed test complete.</pre>"; <-- appears in the HTML output. > waitpid $pid,0; > > If I was to guess, it seems like an interaction with open3 and modperl. > > https://perldoc.perl.org/IPC::Open3 > > The syntax is basically: > > my $pid = open3( <input>, <stdout>, <stderr>, $cmd, @args ); > > If I understand it right, I give it a filehandle - which I then read > from. The executed command is then: > > /bin/stdbuf -o1 -e1 /usr/bin/speedtest-cli > > The inclusion of using stdbuf with these options are to stream the ouput > line after line, and not whatever terminal buffer is in place that will > return the output in a chunk. > > However, all output from running the command ends up in the apache logs. > > That means that <READER> never gets anything, and therefore the print is > never called. > > Does that make more sense? > > > On 14/5/24 12:46, Joseph He wrote: > > Steven, you need to use those mod-perl libraries to handle the web > > request and to generate the response. > > > > https://perl.apache.org/docs/2.0/user/intro/start_fast.html > > <https://perl.apache.org/docs/2.0/user/intro/start_fast.html> > > > > Scroll down to the bottom, you can see how to output the content. > > > > Cheers, > > Joseph > > > > > > On Mon, May 13, 2024 at 9:35 PM Steven Haigh via modperl > > <modperl@perl.apache.org <mailto:modperl@perl.apache.org>> wrote: > > > > That being said, is there a way to output to the web page in this > > scenario? > > > > On 14/5/24 12:15, Joseph He wrote: > > > 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 <mailto:modperl@perl.apache.org> > > <mailto:modperl@perl.apache.org <mailto: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 <http://index.pl> > > <http://index.pl <http://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 <http://index.pl> > > <http://index.pl <http://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 <mailto:net...@crc.id.au> > > <mailto:net...@crc.id.au <mailto:net...@crc.id.au>> > > > 💻 https://crc.id.au <https://crc.id.au> <https://crc.id.au > > <https://crc.id.au>> > > > > > > > > > > -- > > Steven Haigh > > > > 📧 net...@crc.id.au <mailto:net...@crc.id.au> > > 💻 https://crc.id.au <https://crc.id.au> > > > > -- > Steven Haigh > > 📧 net...@crc.id.au > 💻 https://crc.id.au > >