Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » В помощь системному администратору » Apache 2+Perl 5.8 + не определяются параметры @ARGV

Модерирует : lynx, Crash_Master, dg, emx, ShriEkeR

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

SAY



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Прошу прощения за назойливость.
 
Описание проблемы:
 При передаче параметров в Перл-скрипт через URL они неправильно определяются во встроенном массиве Перл'а @ARGV.
 
Установлено:
 1. Win2k+SP3;
 2. Apache 1.3.20:81
 3. Apache 2.0.45:88
 4. ActivePerl 5.8.805 (под Apache'ми работает как CGI)
 
Причем скрипт запущенный под Апач 1.3.20 работает нормально, т.е.:
  http://www.host.rci:81/cgi/test.cgi?1&2&3
в массив @ARGV заносит 3 элемента ($ARG[0]=1, $ARGV[1]=2, $ARGV[2]=3), а то же
  http://www.host.rci:88/cgi/test.cgi?1&2&3
в массив @ARGV заносит 1 элемент $ARGV[0]="1\&2\&3".
 
Кто-нибудь наступал на такие "грабли". Поделитесь мыслями, плиз!
 
С надеждой, SAY.
 





Название уточнила. lynx.

Всего записей: 78 | Зарегистр. 22-04-2003 | Отправлено: 13:15 24-04-2003 | Исправлено: lynx, 22:56 24-04-2003
lynx



Advanced lynx
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Причем скрипт запущенный под Апач 1.3.20 работает нормально

 
Что могу сказать? Попробуй не 5.8, а 5.6х Перла. Если и с ним в Апаче 2 такая же беда, то опять только разработчикам писать.

Всего записей: 11712 | Зарегистр. 08-05-2001 | Отправлено: 22:57 24-04-2003
SAY



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
lynx
Спасибо за ответ, но...

Цитата:
Попробуй не 5.8, а 5.6х Перла.

Прошу прощения, но я уже писал этот вопрос в теме "Apache 2 + Perl (Не могу включить поддержку CGI)", но тогда пробовал под Перл'ом 5.0.0.6 - картина та же.
И еще, для уточнения.
Просто скрипты (и .cgi и .pl) запускаются нормально на обоих Апачах.
Выводил и сравнивал переменные окружения Апача и Перла, типа QUERY_STRING, REQUEST_URI, SCRIPT_NAME, $SUBSTRING_SEPARATOR, $INPUT_RECORD_SEPARATOR и т.д. - в обоих случаях все идентично.
Есть мысль, что это где-то в настройках Апача (типа задать разделители для разбора QUERY_STRING) или параметрах запуска Перл'а (типа включить авторазбиение параметров командной строки - вроде даже есть такой параметр при запуске Перл'а).
 
Добавлено
Перл 5.8 поставил, т.к. планирую попробовать собрать MOD_PERL 2.0, а в доке на установку под Апач 2 рекомендуют использовать именно эту версию.
 
Спасибо, SAY.

Всего записей: 78 | Зарегистр. 22-04-2003 | Отправлено: 09:04 25-04-2003 | Исправлено: SAY, 09:07 25-04-2003
lynx



Advanced lynx
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SAY
 
Я правильно поняла, что с версией 1.3.х нет траблов таких?
Я боюсь, уважаемый, Сай, что это очередной глюк версии 2.х Апача. Что можно посоветовать?
Первое - написать разработчикам.  
Второе. Если работают одновременно оба Апача, то разделять между ними задания, хотя это гимор конечно.
 

Цитата:
Есть мысль, что это где-то в настройках Апача (типа задать разделители для разбора QUERY_STRING) или параметрах запуска Перл'а (типа включить авторазбиение параметров командной строки - вроде даже есть такой параметр при запуске Перл'а).  

 
Гм... не думаю.

Всего записей: 11712 | Зарегистр. 08-05-2001 | Отправлено: 19:00 02-05-2003
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SAY
Делай через + и все будет у тебя хорошо..

Цитата:
http://www.host.rci:88/cgi/test.cgi?1+2+3  

ЗЫ: вообще не понимаю, откуда ты взял, что нужно вставлять &
http://hoohoo.ncsa.uiuc.edu/cgi/primer.html

Цитата:
This string is encoded in the standard URL format of changing spaces to +, and encoding special characters with %xx hexadecimal encoding. You will need to decode it in order to use it.  


Цитата:
For example, if you have a URL http://www.slac.stanford.edu/cgi-bin/foo?hello+world and you use the REXX command PARSE ARG Arg1 Arg2 then Arg1 will contain "hello" and Arg2 will contain "world" (i.e. the + sign is replaced with a space).  
In Perl $ARGV[1] contains "hello" and $ARGV[2] contains "world". If you choose to use the command line to access the input, you need to do less processing on the data before using it.
 


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 20:22 02-05-2003 | Исправлено: Cheery, 20:37 02-05-2003
SAY



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
lynx

Цитата:
Я правильно поняла, что с версией 1.3.х нет траблов таких?  
Именно так, причем это не зависит от версии Перла.

Цитата:
Если работают одновременно оба Апача, то разделять между ними задания, хотя это гимор конечно.
Не понял, а это тут при чем? Они же не деруться между собой из-за срипта.
 
Cheery
Спасибо за совет, завтра выйду на работу и обязательно попробую. Ну и, ессно, о результатах расскажу.

Цитата:
ЗЫ: вообще не понимаю, откуда ты взял, что нужно вставлять &  
Вычитал в переводной книжке, по моему называется "Справочное руководство по Perl". Опять же, лежит на работе, и уточнить смогу только завтра (если интересно).
 
Добавлено
Прошу пардоньте, книжка называется "HTML в действии" от Брюса Мориса.

Цитата:
 ДЕКОДИРОВАНИЕ ДАННЫХ.
...Когда ваша программа CGI получает данные, они записываются в строки NAME=VALUE, разделенные знаком "&"...
...Так что прежде всего вы разбиваете данные на пары примерно таким образом:
 @datafields = split( "/&/", $input_data );
...

и еще,
Cheery
Спасибо за подсказку, попробовал - все заработало и под Апач 1.3 и под 2!
А все-таки,
Цитата:
...где же у него кнопка?..
, т.е. почему "&" работало в 1.3?

Всего записей: 78 | Зарегистр. 22-04-2003 | Отправлено: 13:54 04-05-2003 | Исправлено: SAY, 10:21 05-05-2003
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SAY

Цитата:
Цитата: ДЕКОДИРОВАНИЕ ДАННЫХ.  
...Когда ваша программа CGI получает данные, они записываются в строки NAME=VALUE, разделенные знаком "&"...  
...Так что прежде всего вы разбиваете данные на пары примерно таким образом:  
 @datafields = split( "/&/", $input_data );  

Дык это справедливо для передачи данных типа.. переменная=значение... а когда просто в строке аргументы, то через +

Цитата:
...где же у него кнопка?..  
, т.е. почему "&" работало в 1.3?

Ну кто их, разработчиков, знает )

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 17:34 05-05-2003
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » В помощь системному администратору » Apache 2+Perl 5.8 + не определяются параметры @ARGV


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru