Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не выполняются скрипты с параметрами 
V
    Опции темы
Leshik
Дата 1.11.2006, 00:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 1.10.2006

Репутация: нет
Всего: нет



У меня такая проблема.

У меня есть страница
Код

<html>

<head>
<title>Раз раз раз</title>
</head>
<body>

<a href="http://localhost/cgi-bin/test.pl">Test</a>

<FORM NAME="web" ACTION="http://localhost/cgi-bin/summa" METHOD="GET">
<INPUT NAME="num" TYPE="text">



<br>
<INPUT TYPE="submit" VALUE="Поиск" >
</FORM>

</body>

</html>



и два скрипта
test.pl
Код

#! perl -w

my $a =1212;
print "Content-type: text/html\n\n";
print "a равно  $a<br>\n";

summa.pl
Код

#! perl -w

use CGI;

$a = param('num');

print "Content-type: text/html\n\n";
print "a равно $a<br>\n";



Когда я иду по ссылке Test скрипт test.pl выполняется нормально, а когда в поле формы ввожу любое значение и отправляю его, то нужная страница не выдаётся, а пишется что
Код

Not Found

The requested URL /cgi-bin/summa was not found on this server.
Apache/2.0.55 (Win32) DAV/2 Server at localhost Port 80

Хотя скрипт summa.pl находится в папке \cgi-bin\, так же как и test.pl.
PM MAIL   Вверх
amg
Дата 1.11.2006, 06:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1145
Регистрация: 3.8.2006
Где: Новосибирск

Репутация: 1
Всего: 50



Вызывается summa, а скрипт называется summa.pl. Это разные имена файлов.
PM MAIL   Вверх
Leshik
Дата 1.11.2006, 08:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 1.10.2006

Репутация: нет
Всего: нет



Я и так пробовал, если прописываю
 
Код

<FORM NAME="web" ACTION="http://localhost/cgi-bin/summa.pl" METHOD="GET">

, то тогда пишет, что 
Код

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, [email protected] and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.


--------------------------------------------------------------------------------

Apache/2.0.55 (Win32) DAV/2 Server at localhost Port 80


PM MAIL   Вверх
ctax
Дата 1.11.2006, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 1.11.2006

Репутация: нет
Всего: нет



Internal Server Error

выдается потому что скрипт summa.pl написан с ошибками в работе с модулем CGI 
PM MAIL   Вверх
Zuzu
Дата 1.11.2006, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 140
Регистрация: 19.10.2006
Где: Екатеринбург

Репутация: 1
Всего: 4



Много всего может быть.

Попробуй:
perl -c summa.pl 

Поставь 
exit;

Код

...More information about this error may be available in the server error log. ...


Что пишет сервер в log?


--------------------
Проводить эксперименты на живом сервере опасно, а на мертвом - бесполезно.
PM   Вверх
Leshik
Дата 1.11.2006, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 1.10.2006

Репутация: нет
Всего: нет



Вот что написано в логах
 
Код

[Wed Nov 01 14:56:40 2006] [error] [client 127.0.0.1] Premature end of script headers: summa.pl, referer: http://localhost/
[Wed Nov 01 14:56:40 2006] [error] [client 127.0.0.1] Undefined subroutine &main::param called at C:/Program Files/Apache Group/Apache2/cgi-bin/summa.pl line 5., referer: http://localhost/



И что мне теперь делать?

perl -c summa.pl  попробовал, написал что summa.pl Syntax ok

Это сообщение отредактировал(а) Leshik - 1.11.2006, 14:06
PM MAIL   Вверх
Zuzu
Дата 1.11.2006, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 140
Регистрация: 19.10.2006
Где: Екатеринбург

Репутация: 1
Всего: 4




smile

Читать документацию.  Рекомендую smile))) 

perldoc CGI

Код

USING THE FUNCTION-ORIENTED INTERFACE
To use the function-oriented interface, you must specify which CGI.pm routines or sets of routines to 
import into your script's namespace. 
There is a small overhead associated with this importation, but it isn't much.

   use CGI <list of methods>;

The listed methods will be imported into the current package; you can call them directly without creating 
a CGI object first. This example shows how to import the param() and header() methods, 
and then use them directly:

   use CGI 'param','header';
   print header('text/plain');
   $zipcode = param('zipcode');




--------------------
Проводить эксперименты на живом сервере опасно, а на мертвом - бесполезно.
PM   Вверх
amg
Дата 1.11.2006, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1145
Регистрация: 3.8.2006
Где: Новосибирск

Репутация: 1
Всего: 50



Может быть, когда используешь CGI в функционально-ориентированном стиле, надо в явном виде указывать, какие функции импортировать?
Другими словами, попробуй 
use CGI qw/:standard/;
вместо
use CGI;
PM MAIL   Вверх
Leshik
Дата 1.11.2006, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 1.10.2006

Репутация: нет
Всего: нет



Теперь понял, надо было написать 
Код

use CGI 'param';

 smile 
Просто английский я не учил никогда, так что есть проблемы с пониманием документации.

Большое спасибо  smile 

С
 
Код

use CGI qw/:standard/;


тоже всё работает, спасибо.

Это сообщение отредактировал(а) Leshik - 1.11.2006, 14:25
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: разработка для Web | Следующая тема »


 




[ Время генерации скрипта: 0.0837 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.