URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 19144
[ Назад ]

Исходное сообщение
"Apache - help."

Отправлено .htaccess , 30-Июл-02 02:16 
проблема такая: при выводе результатов cgi скрипта не выводяться переменные, хотя при выполнении из консоли - все нормально. Что делать? Спрашивали у умных людей, говорят:

Надо сконфигурировать так, чтобы при просмотре html`ей запускался perl
транслятор и обрабатывал данные.

но уломать этих людей на помощь - никак - все заняты сильно.

Вопрос: как же запустить этот транслятор? копался в мануалах по апачу - ненашел такого.

Помогите, плз.


Содержание

Сообщения в этом обсуждении
"RE: Apache - help."
Отправлено SiN , 30-Июл-02 09:21 
В cgi или в pl обязательно должна быть строчка (если cgi или pl предполагается запускать на web сервере):
#!/usr/bin/perl
Она как раз то и указывает откуда взять транслятор.
Второе надо указывать http заголовок
print ("Content-type: text/html\n\n");
Правда на счет второго не совсем уверен, но когда я разбирал чужую cgi у меня тоже ни чего не выводилось на экран до тех пор пока я не указал http заголовок.
Надеюсь поможет :))


"RE: Apache - help."
Отправлено .htaccess , 30-Июл-02 13:05 
ну вот сам скрипт:
#!/usr/bin/perl

use 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>

т.е. результат должен выводится.

как быть?



"RE: Apache - help."
Отправлено Аноним , 30-Июл-02 14:54 
[...]
>open (USERS, "/etc/squid.passwd");
[...]
>вроде как все верно, но при выполнении он выводит:
>": bytes "
[...]
>а вот когда через консоль:
[...]
></head><body>rat: 170899 bytes
></body></html>
>
>т.е. результат должен выводится.
>
>как быть?

permissions, сэр, permissions. nobody он и в Африке nobody.