проблема такая: при выводе результатов cgi скрипта не выводяться переменные, хотя при выполнении из консоли - все нормально. Что делать? Спрашивали у умных людей, говорят:Надо сконфигурировать так, чтобы при просмотре html`ей запускался perl
транслятор и обрабатывал данные.но уломать этих людей на помощь - никак - все заняты сильно.
Вопрос: как же запустить этот транслятор? копался в мануалах по апачу - ненашел такого.
Помогите, плз.
В cgi или в pl обязательно должна быть строчка (если cgi или pl предполагается запускать на web сервере):
#!/usr/bin/perl
Она как раз то и указывает откуда взять транслятор.
Второе надо указывать http заголовок
print ("Content-type: text/html\n\n");
Правда на счет второго не совсем уверен, но когда я разбирал чужую cgi у меня тоже ни чего не выводилось на экран до тех пор пока я не указал http заголовок.
Надеюсь поможет :))
ну вот сам скрипт:
#!/usr/bin/perluse CGI qw(:standard escapeHTML);
$k=0;
print "Content-type: text/html\n\n";
open (USERS, "/etc/squid.passwd");
while ($line = <USERS>)
{
@users[$k] = split (":", $line);
$k++;
}
close USERS;print start_html("stat");
foreach $l (@users)
{
open (ACCESS, "/var/log/squid/access.log");
$sum=0;
while (<ACCESS>)
{
($time, $elapsed, $ip_from, $reply_code, $size, $method, $url, $ident, $hdata, $type) = split(" ");
if ($ident eq $l)
{
if ($reply_code ne "TCP_DENIED\/407")
{
open (OUT, ">>$ident.user");
print OUT $ip_from." ".$url." ".$size."\n";
close OUT;
$sum=$sum+$size;
}
}
}
close ACCESS;
print "$l";
}print ":";
print " $sum";
print " bytes\n";print end_html;
вроде как все верно, но при выполнении он выводит:
": bytes "
в виде HTML:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN"
"http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US"><head><title>stat</title>
</head><body>: bytes
</body></html>а вот когда через консоль:
Content-type: text/html<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN"
"http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US"><head><title>stat</title>
</head><body>rat: 170899 bytes
</body></html>т.е. результат должен выводится.
как быть?
[...]
>open (USERS, "/etc/squid.passwd");
[...]
>вроде как все верно, но при выполнении он выводит:
>": bytes "
[...]
>а вот когда через консоль:
[...]
></head><body>rat: 170899 bytes
></body></html>
>
>т.е. результат должен выводится.
>
>как быть?permissions, сэр, permissions. nobody он и в Африке nobody.