Отправляет email-рассылки с помощью сервиса Sendsay

httpd error

Hi, all.

Mandriva 2005LE, Apache-2.0.53, NeTAMS-3.3.0

В папке /var/www/html/cgi-bin лежит файлик нетамса weblogin.cgi
При попытке запустить из браузера в логах появляется:

[Tue Sep 13 11:59:18 2005] [error] [client 127.0.0.1] Can't locate
object method "new" via package "CGI" (perhaps you forgot
to load "CGI"?) at /var/www/cgi-bin/weblogin.cgi line 24.
[Tue Sep 13 11:59:18 2005] [error] [client 127.0.0.1] Premature end of
script headers: weblogin.cgi

При этом test.cgi, лежащий тут же говорит, шо cgi работает нормально.
В строке 24 находится:

$cgi=new CGI; # comment this for command-line version

Ладно, комент - так комент. Логи меняются:

[Tue Sep 13 12:05:24 2005] [error] [client 127.0.0.1] Can't call method
"header" on an undefined value at /var/www/cgi-bin/weblogin.cgi line 25.
[Tue Sep 13 12:05:24 2005] [error] [client 127.0.0.1] Premature end of
script headers: weblogin.cgi

Кто знает, шо с этим делать?

Спасибо.

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 21555; Возраст листа: 782; Участников: 1421
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/437079

Ответить   daks Tue, 13 Sep 2005 12:58:32 +0300 (#437079)

 

Ответы:

Может не установлен модуль CGI?

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 21561; Возраст листа: 782; Участников: 1421
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/437258

Ответить   Александр Зюркалов Wed, 14 Sep 2005 14:43:28 +0600 (#437258)

 

В сообщении от 1126605512 секунд после начала Эпохи daks написал(а):

$ rpm -q perl

?

$ perl -e 'use CGI; print CGI::version()."\n"'

?

Ответить   Konstantin Korikov Wed, 14 Sep 2005 18:54:47 +0300 (#437453)

 

Konstantin Korikov wrote:

$ rpm -q perl
perl-5.8.6-6.1.102mdk

$ perl -e 'use CGI; print CGI::version()."\n"'
Undefined subroutine &CGI::version called at -e line 1.

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 21571; Возраст листа: 783; Участников: 1423
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/437660

Ответить   daks Thu, 15 Sep 2005 10:52:50 +0300 (#437660)

 

В сообщении от 1126770770 секунд после начала Эпохи daks написал(а):

$ find /usr/lib/perl5/ -name CGI.pm -exec \
egrep -iC1 'version|revision' \{\} \;

?

Ответить   Konstantin Korikov Thu, 15 Sep 2005 11:50:15 +0300 (#437764)

 

Konstantin Korikov wrote:

$ find /usr/lib/perl5/ -name CGI.pm -exec \

use strict;
use vars qw( $VERSION );

$VERSION = sprintf("%d.%02d", q$Revision: 1.60 $ =~ /(\d+)\.(\d+)/);

--
# The following sub-routine was lifted from Lincoln Stein's CGI.pm
# module, version 2.36. Name has been prefixed by a '_'.

--

=head1 REVISION

$Revision: 1.60 $

use strict;
use vars qw( $VERSION );

$VERSION = sprintf("%d.%02d", q$Revision: 1.60 $ =~ /(\d+)\.(\d+)/);

--
# The following sub-routine was lifted from Lincoln Stein's CGI.pm
# module, version 2.36. Name has been prefixed by a '_'.

--

=head1 REVISION

$Revision: 1.60 $

# notice remain attached to the file. You may modify this module as you
# wish, but if you redistribute a modified version, please attach a note
# listing the modifications you have made.

# The most recent version and complete docs are available at:
# http://stein.cshl.org/WWW/software/CGI/

$CGI::revision = '$Id: CGI.pm,v 1.165 2004/04/12 20:37:26 lstein Exp $';
$CGI::VERSION=3.05;

--
# Make sure so we don't get fooled by inherited $ENV{MOD_PERL}
if (defined $mod_perl::VERSION) {
if ($mod_perl::VERSION >= 1.99) {
$MOD_PERL = 2;
--

#### Method: version
# Return the current version
####
'version' => <<'END_OF_FUNC',
sub version {
return $VERSION;
}
--
$xml_dtd++ if ref($dtd) eq '' && $dtd =~ /\bXHTML\b/i;
push @result,qq(<?xml version="1.0" encoding="$encoding"?>) if
$xml_dtd;

--
my $prot = $self->server_protocol;
my($protocol,$version) = split('/',$prot);
return "\L$protocol\E";
--
$CGI::CGI=<<EOF;
$CGI::VERSION;
$MultipartBuffer::SPIN_LOOP_MAX;
--

The current version of CGI.pm is available at

--

NOTE: As of version 1.5, the array of parameter names returned will
be in the same order as they were submitted by the browser.
--

NOTE 2: In older versions, this method was called B<import()>. As of
version 2.20,
this name has been removed completely to avoid conflict with the built-in
--
convention introduced long ago by Steve Brenner in his cgi-lib.pl
module for Perl version 4.

--
user's desktop to be flooded with a rotating gradient fill until his
machine reboots). You don't need to wait for a new version of CGI.pm
to start using it immediately:
--

By default, CGI.pm versions 2.69 and higher emit XHTML
(http://www.w3.org/TR/xhtml1/). The -no_xhtml pragma disables this
--

This became the default in version 2.64.

--

Prior to CGI.pm version 2.41, providing an empty ('') string as an
attribute argument was the same as providing undef. However, this has
--

(2) use the -override (alias -force) parameter (a new feature in version
2.15).
This forces the default value to be used, regardless of the previous value:
--

NEW AS OF VERSION 2.15: If you don't want the field to take on its previous
value, you can force its current value by using the -override (alias -force)
--

To be safe, use the I<upload()> function (new in version 2.47). When
called with the name of an upload field, I<upload()> returns a
--
then nothing is selected when the list first appears. In the named
parameter version, you can use the synonym "-defaults" for this
parameter.
--

Netscape browsers versions 1.1 and higher, and all versions of
Internet Explorer, support a so-called "cookie" designed to help
--

Note that the capitalization changed between version 2.43 and 2.44 in
order to avoid conflict with Perl's accept() function.
--
Returns the HTTP_COOKIE variable, an HTTP extension implemented by
Netscape browsers version 1.1 and higher, and all versions of Internet
Explorer. Cookies have a special format, and this method call just
--

Returns the server software and version number.

--
The Microsoft Internet Information Server requires NPH mode. As of
version 2.30, CGI.pm will automatically detect when the script is
running under IIS and put itself into this mode. You do not need to
--

OLD VERSION
require "cgi-lib.pl";
--

NEW VERSION
use CGI;
--
Address bug reports and comments to: lste***@c*****.org. When sending
bug reports, please provide the version of CGI.pm, the version of
Perl, the name and version of your Web server, and the name and
version of the operating system you are using. If the problem is even
remotely browser dependent, please provide information about the

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 21580; Возраст листа: 783; Участников: 1423
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/437880

Ответить   daks Thu, 15 Sep 2005 18:24:45 +0300 (#437880)

 

В сообщении от 1126797885 секунд после начала Эпохи daks написал(а):

У вас две левых версии модуля CGI. Самое простое решение: открыть окно
(не в компьютере) и выкинуть из него диски Mandriva 2005LE, пойти в
магазин и купить нормальный дистрибутив.

Ответить   Konstantin Korikov Thu, 15 Sep 2005 22:24:06 +0300 (#438019)

 

Konstantin Korikov wrote:

2KK: Тут уже за меня ответили. Присоединяюсь.
2All:Сорри за тормозуху - в отпуск отправили... ;) И все таки, кто знает
вариант решения проблемы??

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 21724; Возраст листа: 794; Участников: 1428
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/443494

Ответить   daks Mon, 26 Sep 2005 11:20:15 +0300 (#443494)

 

поищи файл CGI.pm
Если такого нет, то значит нужно установить модуль CGI.

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 21576; Возраст листа: 783; Участников: 1423
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/437776

Ответить   Александр Зюркалов Thu, 15 Sep 2005 14:00:20 +0600 (#437776)

 

Александр Зюркалов wrote:

$ locate CGI.pm
/usr/lib/perl5/5.8.6/i386-linux/CGI.pm
/usr/lib/perl5/vendor_perl/5.8.4/AppConfig/CGI.pm
/usr/lib/perl5/vendor_perl/5.8.4/CGI.pm

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 21579; Возраст листа: 783; Участников: 1423
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/437860

Ответить   daks Thu, 15 Sep 2005 16:56:42 +0300 (#437860)

 

daks пишет:

А в каких директориях perl ищет свои модули?
$ perl -e 'foreach(@INC){print "$_\n"};'

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 21594; Возраст листа: 785; Участников: 1421
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/438662

Ответить   Александр Зюркалов Fri, 16 Sep 2005 12:30:36 +0600 (#438662)

 

Александр Зюркалов wrote:

$ perl -e 'foreach(@INC){print "$_\n"};'
/usr/lib/perl5/5.8.6/i386-linux
/usr/lib/perl5/5.8.6
/usr/lib/perl5/site_perl/5.8.6/i386-linux
/usr/lib/perl5/site_perl/5.8.6
/usr/lib/perl5/site_perl
/usr/lib/perl5/vendor_perl/5.8.6/i386-linux
/usr/lib/perl5/vendor_perl/5.8.6
/usr/lib/perl5/vendor_perl/5.8.5
/usr/lib/perl5/vendor_perl/5.8.4
/usr/lib/perl5/vendor_perl/5.8.3
/usr/lib/perl5/vendor_perl/5.8.2
/usr/lib/perl5/vendor_perl/5.8.1
/usr/lib/perl5/vendor_perl/5.6.1
/usr/lib/perl5/vendor_perl
.

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 21725; Возраст листа: 794; Участников: 1428
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/443498

Ответить   daks Mon, 26 Sep 2005 11:22:39 +0300 (#443498)

 

А что если в @INC оставить только папки с 5.8.6?

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 21726; Возраст листа: 794; Участников: 1428
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/443573

Ответить   Александр Зюркалов Mon, 26 Sep 2005 17:11:08 +0600 (#443573)

 

Александр Зюркалов wrote:

Можно попробовать. А как?

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 21727; Возраст листа: 794; Участников: 1428
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/443575

Ответить   daks Mon, 26 Sep 2005 14:20:38 +0300 (#443575)

 

В скрипте в самой первой строчке после #/usr/bin/perl попробуй следующее:
INC=(
'/usr/lib/perl5/5.8.6/i386-linux',
'/usr/lib/perl5/5.8.6/',
'/usr/lib/perl5/site_perl/5.8.6/i386-linux',
'/usr/lib/perl5/site_perl/5.8.6',
'/usr/lib/perl5/site_perl',
'/usr/lib/perl5/vendor_perl/5.8.6/i386-linux',
'/usr/lib/perl5/vendor_perl/5.8.6',
'/usr/lib/perl5/vendor_perl',
'.'
);

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 21746; Возраст листа: 796; Участников: 1440
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/444941

Ответить   Александр Зюркалов Wed, 28 Sep 2005 08:56:54 +0600 (#444941)

 

Вставил:

INC=(
'/usr/lib/perl5/5.8.6/i386-linux',
'/usr/lib/perl5/5.8.6/',
'/usr/lib/perl5/site_perl/5.8.6/i386-linux',
'/usr/lib/perl5/site_perl/5.8.6',
'/usr/lib/perl5/site_perl',
'/usr/lib/perl5/vendor_perl/5.8.6/i386-linux',
'/usr/lib/perl5/vendor_perl/5.8.6',
'/usr/lib/perl5/vendor_perl',
'.'
);

Ошибка 500, а в логах:
[Thu Sep 29 14:18:41 2005] [error] [client 193.201.208.71] Can't modify
constant item in scalar assignment at /var/www/cgi-b
in/weblogin.cgi line 24, near ");"
[Thu Sep 29 14:18:41 2005] [error] [client 193.201.208.71] BEGIN not
safe after errors--compilation aborted at /var/www/cgi-
bin/weblogin.cgi line 34.
[Thu Sep 29 14:18:41 2005] [error] [client 193.201.208.71] Premature end
of script headers: weblogin.cgi

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 21766; Возраст листа: 797; Участников: 1440
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/445752

Ответить   daks Thu, 29 Sep 2005 14:22:19 +0300 (#445752)

 

daks пишет:

нужно @INC, опечатка вышла

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 21776; Возраст листа: 798; Участников: 1443
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/446083

Ответить   Александр Зюркалов Fri, 30 Sep 2005 08:15:49 +0600 (#446083)

 

Александр Зюркалов wrote:

[Fri Sep 30 14:10:57 2005] [error] [client 193.201.208.71] Can't call
method "header" on an undefined value at /var/www/cgi-
bin/weblogin.cgi line 38.
[Fri Sep 30 14:10:57 2005] [error] [client 193.201.208.71] Premature end
of script headers: weblogin.cgi

Начало скрипта :

use CGI; # line 34
require "netams_api.pl";

#$cgi=new CGI; # comment this for command-line version
print $cgi->header(-type=>'text/html',-expires=>'now'); # line 38
comment this for command-line version

$user=$cgi->param("user"); # line 40
$password=$cgi->param("password");
$open=$cgi->param("open");
$from=$ENV{"REMOTE_ADDR"};

Если закомментировать 38 строку, та же ошибка появляется на 40-й :(
Т.е. не может выполнится ни одна инструкция. Это при том, шо тестовый
скрипт отрабатывает нормально. Сам тестовый скрипт:

#!/usr/bin/perl

print "Content-type: text/html\n\n";
print "<b>Date: ", scalar localtime, "</b><br>\n";
print "<hr><h1>It worked!</h1>\n";
print "This script runs under: ".$ENV{"GATEWAY_INTERFACE"}."<hr></n";

Так вот, если строчку с weblogin.cgi

print $cgi->header(-type=>'text/html',-expires=>'now');

вставить в этот скрипт, он тоже затыкается.

[Fri Sep 30 14:27:41 2005] [error] [client 193.201.208.71] Can't call
method "header" on an undefined value at /var/www/cgi-
bin/test.cgi line 22.

Есть еще какие-нить идеи, у меня иссякли :(

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 21785; Возраст листа: 798; Участников: 1443
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/446358

Ответить   daks Fri, 30 Sep 2005 14:40:27 +0300 (#446358)

 

В сообщении от 30 сентября 2005 15:40 daks написал(a):

если эту строчку закоментировать - ничего работать не будет.

Уберите комментарий и запустите вручную скрипт.
Он должен затребовать у вас список параметров (там где new
CGI).
Введите в ответ ctrl/D, скрипт двинется дальше и выдаст на
стандартный вывод ответ вместе со всеми заголовками.

А лучше - почитайте man на CGI.

Ответить   "Sergey B. Khvatov" Fri, 30 Sep 2005 16:25:31 +0400 (#446439)

 

Sergey B. Khvatov wrote:

Это осечка - она раскоментирована.

# perl weblogin.cgi
Can't locate object method "new" via package "CGI" (perhaps you forgot
to load "CGI"?) at weblogin.cgi line 37.

И никто ниче не требовал :(

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 21851; Возраст листа: 801; Участников: 1438
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/448235

Ответить   daks Mon, 03 Oct 2005 09:02:32 +0300 (#448235)

 

В сообщении от 3 октября 2005 10:02 daks написал(a):

Не успел - это как раз CGI::new и должен был требовать.

У вас судя по всему побитый модуль CGI. Проще всего удалить
все существующие у вас модули CGI (файлы CGI.pm и каталоги
CGI если таковые имеются) Загрузить правильный (и самый
новый) модуль с cpan.org и установить его.

Ответить   "Sergey B. Khvatov" Mon, 3 Oct 2005 10:27:08 +0400 (#448241)