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>