Hi John,

Thanks for the Email. I had thought about the paths. I just tried it and it
makes no difference.

Regards

Richard

JK> Hi ,

JK> I am no expert but I would guess that cgi runs in a restricted environment 
JK> and doesn't have a full PATH, thus it doesn't know how to call tail and 
JK> tac.

JK> I'd try putting the full path to these in the script.

JK> /usr/bin/tail
JK> /usr/bin/tac

JK> instead of just tail and tac.

JK> HTH, if not I am sure some guru will set you (and me) straight.

JK> cheers
JK> johnk

JK> 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/</&lt;/g;
>> $tail =~ s/>/&gt;/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
>> 
>> 
>> 
>>   
>> 
>> 
>> 
>> 
>> 
>> 





-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to