Forum Webscript.Ru

Программирование => Perl => Тема начата: KhasDenis от 23 Сентября 2003, 12:59:15

Название: скрипт после своей работы выдает "The page cannot be displayed"
Отправлено: KhasDenis от 23 Сентября 2003, 12:59:15
Помогите разобраться ...

use CGI::Carp qw(fatalsToBrowser);

$g_thisscript = $ENV{SCRIPT_NAME};
if ($g_thisscript =~ /\\.(\\w+)$/) {$_ext = $1}

sub Ext {
    my $file = shift;
    my $result = $file . \'.\' . $_ext;
    return $result;
} # sub Ext

eval {
    ($0 =~ m,(.*)/[^/]+,)   && unshift (@INC, "$1");
    ($0 =~ m,(.*)\\\\[^\\\\]+,) && unshift (@INC, "$1");

    require &Ext("arp3-config");
    require &Ext("arp3-settings");
    require &Ext("arp3-logs");
    require &Ext("arp3-background");
    require &Ext("arp3-customtags");
    require &Ext("arp3-library");
    require &Ext("arp3-locks");
    require &Ext("arp3-dynamic");
    require &Ext("arp3-login");
    require &Ext("arp3-autoresponders");
    require &Ext("arp3-broadcast");
    require &Ext("arp3-backup");
    require &Ext("arp3-display");
    require &Ext("arp3-cookies");
    require &Ext("arp3-validate");
    require &Ext("arp3-mail");
    require &Ext("arp3-trackingtags");
    require &Ext("arp3-setup");
    require &Ext("arp3-version");
    require &Ext("arp3-profile");
    require &Ext("arp3-subscribers");
    require &Ext("arp3-mytags");
    require &Ext("arp3-data");
    require &Ext("arp3-menu");
    require &Ext("arp3-links");
}; # eval

$g_thisserver = $ENV{SERVER_NAME};
$g_browser = $ENV{HTTP_USER_AGENT};

$g_settings = &db_select_row("SELECT * FROM $db_table_SETTINGS WHERE id=1");
%g_settings = %$g_settings;

$g_profile = &db_select_row("SELECT * FROM $db_table_OWN WHERE id=1");

&ReadInput;
$g_a0 = $INFO{a0};
$g_a1 = $INFO{a1};
$g_a2 = $INFO{a2};
$g_a3 = $INFO{a3};
$g_a4 = $INFO{a4};
$g_ret = $INFO{ret};

if (! $g_a0) {$g_a0 = $FORM{a0}}

if ($g_a0 eq "log")
    {&Login}
#     {print "Hello"}
elsif ($g_a0 eq "aut")
    {&Autoresponders}
elsif ($g_a0 eq "cam")
    {&Campaigns}
elsif ($g_a0 eq "fil")
    {&Filters}
elsif ($g_a0 eq "tra")
    {&TrackingTags}
elsif ($g_a0 eq "pro")
    {&Profile}
elsif ($g_a0 eq "set")
    {&Setup}
elsif ($g_a0 eq "ver")
    {&Version}
elsif ($g_a0 eq "bro")
    {&Broadcast}
elsif ($g_a0 eq "bak")
    {&Backup}
elsif ($g_a0 eq "res")
    {&Restore}
elsif ($g_a0 eq "cut")
    {&MyTags}
elsif ($g_a0 eq "lnk")
    {&Links}
else
    {&Login}

&DoExit;

http://myHost/perl/arp3/arp3.pl?a0=log
по такому запросу открывается форма логина ...
ввожу логин и ... "The page cannot be displayed"
Название: скрипт после своей работы выдает "The page cannot be displayed"
Отправлено: ondr от 23 Сентября 2003, 13:20:20
Цитировать
KhasDenis:
"The page cannot be displayed"


Значит, что адрес неправильный или настройки сервера не соотсветсятвующие, но со скриптом никак не связано.

Где строчка #!/usr/bin/perl ? Если запускаешь под mod_perl, то в скрипте есть опасные конструкции для этого.

зы: Лучше присылать лишь нужные части скрипта. А еще лучше сэмулировать проблему в более коротком и понятном стрипте. Если честно, то что я увидел подвергло меня в ужас.
Название: скрипт после своей работы выдает "The page cannot be displayed"
Отправлено: AliMamed от 23 Сентября 2003, 13:38:35
Цитировать
ondr:
Значит, что адрес неправильный или настройки сервера не соотсветсятвующие, но со скриптом никак не связано.

бред какойто

Цитировать
KhasDenis:
скрипт после своей работы выдает "The page cannot be displayed"

это не скрипт выдает, а браузер.

надо отлаживать - смотреть что в поле a0 формы логина и смотреть соответствующую процедуру.
Название: скрипт после своей работы выдает "The page cannot be displayed"
Отправлено: KhasDenis от 23 Сентября 2003, 13:45:08
как я понял логику скрипта ... сначала инклюдятся определенные файлы, а потом в зависимости от запроса выполняется функция ...
в моем случае Login. Она находится в файле arp3-login.pl ... такой файл есть в системе, в той же папке .... если даже что то не так в функции, то я ожидал увидеть все что угодно только не "The page cannot be displayed" .... вот может настройки сервера не соответствующие? можно здесь по конкретней?
Название: скрипт после своей работы выдает "The page cannot be displayed"
Отправлено: ondr от 23 Сентября 2003, 14:01:33
Цитировать
AliMamed:
бред какойто

Цитировать
KhasDenis:
то я ожидал увидеть все что угодно только не "The page cannot be displayed" .... вот может настройки сервера не соответствующие? можно здесь по конкретней?


Данное сообщение выводится лишь в то случае, если страница (сайт) отсутствует! И никак иначе!!!

Причин может быть море!
Название: скрипт после своей работы выдает "The page cannot be displayed"
Отправлено: KhasDenis от 23 Сентября 2003, 14:05:38
View source формы ....


по представленному выше скрипту подскажите, кто будет обрабатывать ее ?
спасибо, получил уже много полезной информации
Название: скрипт после своей работы выдает "The page cannot be displayed"
Отправлено: AliMamed от 23 Сентября 2003, 14:07:08
[off]я в этом гоне больше не участвую. что я по этому поводу думаю и что делать я сказал[/off]
смотри субпроцедуру Login - почему она не отрабатывает при передаваемых параметрах
Название: скрипт после своей работы выдает "The page cannot be displayed"
Отправлено: Phoinix от 24 Сентября 2003, 13:26:10
KhasDenis
Поменяй POST на GET в форме и ты сразу увидишь где у тебя ошибка:

а что бы далеко не ходить:

при передаче параметра action=\'/perl/arp3/arp3.pl?a0=log&a1=pro\' проверяется наличие в начале заголовка (http://) если его нет, то автоматически перед значением action вставляется URL текущей страницы в итоге форма активизируется на ссылку:
http://myHost/perl/arp3/perl/arp3/arp3.pl?a0=log&a1=pro

Естественно сервер не будет находить страницу
Название: скрипт после своей работы выдает "The page cannot be displayed"
Отправлено: KhasDenis от 28 Сентября 2003, 17:15:44
Похоже на фантастику, но скрипт перестал работать совсем :(
После моих в нем ковыряний, вернул старую версию ...
HTTP 500 -Internal server error.
Это в IE,
konqueror же пишет Software error:
Undefined subroutine : &Apache::ROOTwww....
Откуда браузер может взять эту информацию ? ему передается только код ошибки, или нет ?
Нашел в инете инфу, что проблема может быть в старой версии модуля CGI. Как мне глянуть мою ?
Название: скрипт после своей работы выдает "The page cannot be displayed"
Отправлено: ondr от 29 Сентября 2003, 10:29:48
Цитировать
KhasDenis:
HTTP 500 -Internal server error

Чти логи, либо перенаправь вывод ошибок в броузер.

Цитировать
Нашел в инете инфу, что проблема может быть в старой версии модуля CGI. Как мне глянуть мою


Все тут:
$CGI::revision
$CGI::VERSION
либо посмотри в файле CGI.pm

Цитировать
Undefined subroutine : &Apache::ROOTwww....


Возможно CGI.pm тут не при чем.
Название: скрипт после своей работы выдает "The page cannot be displayed"
Отправлено: KhasDenis от 29 Сентября 2003, 11:12:46
сэмулировал проблему в более коротком скрипте:
-------------------------------------------------------
#! /usr/lib/perl

use CGI::Carp qw(fatalsToBrowser);

-------------------------------------------------------
таже ошибка ... perl у меня с дистрибутива Red Hat 7.3
Название: скрипт после своей работы выдает "The page cannot be displayed"
Отправлено: NeoNox от 29 Сентября 2003, 11:16:35
Посмотр что в error_log.
Там и лежит твоя ошибка
Название: скрипт после своей работы выдает "The page cannot be displayed"
Отправлено: KhasDenis от 29 Сентября 2003, 11:33:34
в /var/log/httpd

есть пять файлов
error_log
error_log1
error_log2
error_log3
error_log4

все кроме четвертого пустые (((, а в четвертом последний лог от 25 августа
Название: скрипт после своей работы выдает "The page cannot be displayed"
Отправлено: NeoNox от 29 Сентября 2003, 12:01:37
Если по дефолту то смотри здесь
/usr/local/apache/logs/error_log
Название: скрипт после своей работы выдает "The page cannot be displayed"
Отправлено: KhasDenis от 29 Сентября 2003, 12:12:27
нашел :)
Premature end of script headers : /var/www/cgi-bin/arp3/arp3.pl
и тоже самое для эмулированного скрипта
Название: скрипт после своей работы выдает "The page cannot be displayed"
Отправлено: NeoNox от 29 Сентября 2003, 12:46:49
стоит в начале #!/usr/bin/perl?
заголовки выводит?
Название: скрипт после своей работы выдает "The page cannot be displayed"
Отправлено: KhasDenis от 29 Сентября 2003, 13:12:33
#! /usr/bin/perl   стоит.
Как выводятся заголовки ?
Название: скрипт после своей работы выдает "The page cannot be displayed"
Отправлено: NeoNox от 29 Сентября 2003, 13:15:34
use CGI qw(:standard);
print header();
Название: скрипт после своей работы выдает "The page cannot be displayed"
Отправлено: lodevar от 29 Сентября 2003, 13:21:21
#! /usr/bin/perl
.  ^
Название: скрипт после своей работы выдает "The page cannot be displayed"
Отправлено: KhasDenis от 29 Сентября 2003, 13:36:51
у меня пробела нет, опечатка ....
В том скрипте который я разбираю(см начало топика) заголовки не выводятся. Но там куча инклюдов... наверно стоит поискать конструкцию которую ты указал
Название: скрипт после своей работы выдает "The page cannot be displayed"
Отправлено: NeoNox от 29 Сентября 2003, 13:40:04
Если ты его броузером запускаеш то заголовки обязательны.
если нет то пробуй perl -cw tvoy_script.cgi
Название: скрипт после своей работы выдает "The page cannot be displayed"
Отправлено: KhasDenis от 29 Сентября 2003, 13:57:51
скрипты рабочие, так мне сказали те от кого они мне в наследство достались :)
поставил на одном хосте, по запросу
http://www.myhost.com/perl/arp3/arp3.pl?a0=log
появляется логин пейдж, а уже потом, после ввода пароля
HTTP 500 - Internal server error
в логах при этом
[Mon Sep 29 04:52:36 2003] null: DBD::mysql::st execute failed: MySQL server has gone away at /home/virtual/site81/fst/var/www/perl/arp3/arp3-data.pl line 51.

на локальных же двух машинах не добьюсь даже первой страницы

Software error:
Undefined subroutine &main::db_select_row called at /var/www/cgi-bin/arp3/arp3.pl line 78.

если бы была ошибка в скрипте - она была бы везде .... вроде так.
Название: скрипт после своей работы выдает "The page cannot be displayed"
Отправлено: NeoNox от 29 Сентября 2003, 14:02:19
Вроде не так...
Что в /var/www/cgi-bin/arp3/arp3.pl строка 78?
Название: скрипт после своей работы выдает "The page cannot be displayed"
Отправлено: KhasDenis от 29 Сентября 2003, 14:05:26
$g_settings = &db_select_row("SELECT * FROM $db_table_SETTINGS WHERE id=1");
Название: скрипт после своей работы выдает "The page cannot be displayed"
Отправлено: NeoNox от 29 Сентября 2003, 14:06:59
а db_select_row где находится?
Название: скрипт после своей работы выдает "The page cannot be displayed"
Отправлено: KhasDenis от 29 Сентября 2003, 14:07:10
эта функция в файле arp3-data.pl описана
---------------------------- arp3-data.pl -----------------------------------------
use DBI;

$global_dbh = DBI->connect("DBI:$_db_type:$db_name:$db_host", $db_login, $db_password, {RaiseError => 1, AutoCommit => 1 }) or die "Unable to connect to db";

sub db_connect {
    my $result = $global_dbh;
    return $result;
} # sub db_connect

sub db_execute {  
    my $sql = shift;
    my $dbh = &db_connect;
    my $sth = $dbh->prepare($sql) or die "Can\'t prepare $sql: $dbh->errstr\\n";
    $sth->execute or die "Can\'t execute $sql";
    return $sth;
} # sub db_execute

sub db_select_row {
    my $sql = shift;
    my $dbh = &db_connect;
    my $sth = $dbh->prepare($sql) or die "Can\'t prepare $sql: $dbh->errstr\\n";
    $sth->execute or die "Can\'t execute $sql";
    my $result = $sth->fetchrow_hashref;
    $sth->finish;
    return $result;
} # sub db_select_row
Название: скрипт после своей работы выдает "The page cannot be displayed"
Отправлено: NeoNox от 29 Сентября 2003, 14:13:14
напиши перед 78 строкой
require \'./arp3-data.pl\';
Название: скрипт после своей работы выдает "The page cannot be displayed"
Отправлено: KhasDenis от 29 Сентября 2003, 14:15:42
написал ...

вот ответ браузера

Undefined subroutine &main::ReadInput called at /var/www/cgi-bin/arp3/arp3.pl line 84.
Название: скрипт после своей работы выдает "The page cannot be displayed"
Отправлено: KhasDenis от 29 Сентября 2003, 14:16:32
не правильно файлы инклюдятся значит...
перл непонимает их конструкцию ?
Название: скрипт после своей работы выдает "The page cannot be displayed"
Отправлено: KhasDenis от 29 Сентября 2003, 14:23:45
все таки если вас не затруднит поясните почему с локальных серверов даже не открывается форма .... почему разные ошибки
Название: скрипт после своей работы выдает "The page cannot be displayed"
Отправлено: KhasDenis от 29 Сентября 2003, 14:26:00
удаленно с инклюдами все нормально, т.к. без добавления вашей строчки скрипт сам дошел до arp3-data.pl
Название: скрипт после своей работы выдает "The page cannot be displayed"
Отправлено: NeoNox от 29 Сентября 2003, 14:31:33
Я этот скрипт не писал и откровенно в логике его разбираться мне не позволяет время. Читай-переводи ошибки и исправляй их