Hi ,
I am no expert but I would guess that cgi runs in a restricted environment
and doesn't have a full PATH, thus it doesn't know how to call tail and
tac.
I'd try putting the full path to these in the script.
/usr/bin/tail
/usr/bin/tac
instead of just tail and tac.
HTH, if not I am sure some guru will set you (and me) straight.
cheers
johnk
On Wed, 25 Oct 2006, Richard Luckhurst wrote:
> Hi All
>
> I have a simple perl cgi script that works fine and produces the correct
> output
> when run from a command line. However when called as a cgi script from within
> a
> web page the script does not run correctly.
>
> The script is called log-errors and is called as follows
>
> log-errors?domain=www.resmaster.com
>
> The script is as follows
>
> #!/usr/bin/perl
> #
>
> use strict;
> use warnings;
>
> use CGI qw/:standard -no_xhtml/;
>
> my $domain = param('domain');
> my $tail = `tail -n2000 /var/log/httpd/$domain-error_log 2>/dev/null | tac`;
> $tail =~ s/</</g;
> $tail =~ s/>/>/g;
>
> print header;
>
> print start_html (
> -title => 'Exodus Web Server Log',
> -lang => 'en-UK',
> -link => 'blue',
> -vlink => 'blue');
>
> print font({size => 4}, b("Last 2000 Lines of the Error log for: $domain")),
> br, "\n";
> print font({size => 1}, br), "\n";
> print 'Go to ', a({href => '#bottom'}, i('End of log')), br, br, "\n";
> print pre($tail), "\n";
> print a({name => 'bottom'}), br, "\n";
> print b('End of log'), br, "\n";
> print end_html, "\n\n\n";
>
>
> I have tried putting a print statement in to see if the $domain variable gets
> set and it does get set to www.resmaster.com. The print line also uses the
> $domain variable and the correct thing is printed on the html page.
>
> The system command produces nothing, the $tail variable is empty, when run as
> a
> cgi script. When I run the script from a command line (and I force $domain to
> be
> www.resmaster.com as I can't pass it in) I find that the system call works
> and I
> get the data I would expect. In fact I left the $domain set to
> www.resmaster.com
> and tried running it as a cgi and I get nothing from the system call.
>
> I am using Apache 2.2 as my webserver and perl 5.8.8 both as they came with
> Fedora core 5.
>
> Can anyone offer any suggestions about why this does not work?
>
> Regards
>
> Richard Luckhurst
>
>
>
>
>
>
>
>
>
>
--
Dr. John A Kennedy email: [EMAIL PROTECTED]
LMU Muenchen
Sektion Physik
Am Coulombwall 1 Phone: 0049(89)2891 4152
D 85748 Garching, Germany Fax: 0049(89)2891 4103
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>