Странная проблема с получением $ ENV {'QUERY_STRING'} - PullRequest
2 голосов
/ 10 декабря 2010

У меня здесь странная проблема.Я перемещаю (работающий) сайт на новый сервер apache, к которому у меня нет прямого доступа (мне нужно пройти через двух человек, чтобы закончить).

Сайт использует Perl-скрипт под названиемadframe для разбора HTML-шаблонов.URL-адреса, по которым он вызывается, выглядят как /cgi-bin/adframe/index.html?x=something, а adframe - сценарий.Отсутствующий суффикс никогда не вызывал реальных проблем.Но на этом новом сервере Ubuntu $ENV{'QUERY_STRING'} всегда пуст.$ENV{'REQUEST_METHOD'} правильно отображается как GET, но строка запроса ничего не показывает ...

Обычные * .cgi скрипты показывают строку запроса без проблем.

Из собранных мной журналов кажется, что серверЗапустите fastcgi, mod_fcgid, и сервер даже не примет .pl как расширение для скриптов.У меня нет такого большого опыта работы с серверным программным обеспечением, но я подумал, что это может быть проблема с сервером, который не принимает adframe в качестве сценария cgi и, следовательно, неправильно передает строку query_string ... Может кто-нибудь дать мне несколько советов, где яможет указать администратора или что-то, что я мог бы сделать в .htaccess сам?В любом случае, чтобы убедиться, что adframe распознается как скрипт cgi !?(если это проблема ...)

Любая помощь приветствуется!thomas

РЕДАКТИРОВАТЬ: Я нашел более подробную информацию: сервер, похоже, работает кеш VARNISH ... это основное отличие от моих обычных конфигураций ... Кроме того, сценарий работает, если вы вызываете /cgi-bin / adframe / somedir / somefile.html? x = что-то, $ ENV {PATH_INFO} сообщает, какой шаблон анализировать, а $ ENV {QUERY_STRING} - это строка запроса.Теперь строка запроса пуста, но если я вызываю / cgi-bin / adframe? X = что-то (без PATH_INFO), строка запроса отображается!У кого-нибудь есть идея, что здесь происходит?спасибо!

Ответы [ 2 ]

1 голос
/ 13 декабря 2010

Понял.Кэш VARNISH удаляет все строки запроса со статического содержимого (* .html и т. Д.) ... phew

0 голосов
/ 06 мая 2015

Просто столкнулся с той же проблемой.Я новичок в написании сценариев на Perl.

Я пытался сделать следующее:

@values = split (/&/, $ENV{'QUERY_STRING'});

, но это не сработало

это сработало:

@values = split (/&/, "$ENV{'QUERY_STRING'}");

на всякий случай, если другие новички столкнулись с той же проблемой.

...