Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: разработка для Web > переменное окружение catalyst mod_perl


Автор: gcc 21.9.2009, 18:04
полдскажите где хранятся переменные окружения в mod_perl в Catalyst?

я использовал в веб сервер встроенном или в CGI
Код

$c->engine->env->{HTTP_X_FORWARDED_FOR}


или вот, только в веб сервер, в CGI нету:
Код

%env


запустил в mod_perl , мне сказал что нету метода env

в гугле что-то нету
http://www.google.com.ua/#hl=uk&q=%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D0%BE%D0%B5+%D0%BE%D0%BA%D1%80%D1%83%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5+catalyst+mod_perl&meta=&fp=bf607cbc1d1ce7ba

Автор: gcc 21.9.2009, 21:56
$ENV{'REMOTE_ADDR'}
Код

Caught exception in MyApp::Controller::Login->login "DBD::mysql::db do failed: Column 'ip' cannot be null at
 /usr/local/www/data/www/MyApp/lib/MyApp/Controller/Login.pm line 107."


$c->engine->env->{HTTP_X_FORWARDED_FOR}
Код

Caught exception in MyApp::Controller::Login->login "Can't locate object method "env" via package 
"Catalyst::Engine::Apache2::MP20" at /usr/local/www/MyApp/lib/MyApp/Controller/Login.pm line 105."


как исправить? 


Автор: ginnie 22.9.2009, 11:27
gcc, с Каталистом не работал, поэтому не скажу, как в нем получить $r (поищи сам). Для mod_perl1 можно использовать:

Код

$r->connection->remote_ip;

$r->header_in("X-Forwarded-For");

Автор: gcc 22.9.2009, 22:09
ginnie, я нашел

$c->request->header(’X-Forwarded-For’) 
 $c->request->address


а почему X-Forwarded-For  называется именно так, а не HTTP_X_FORWARDED_FOR ?

подскажите, как узнать все возможные названия переменных окружениев из $c->request->header ??

Код

use Data::Dumper;
print Dumper($c->request->header);

так не работает, там используется делегирование методов от Moose, ошибку выдает

я вот посмотрел исходники, но там название не увидел
http://cpansearch.perl.org/src/GAAS/libwww-perl-5.832/lib/HTTP/Headers.pm

http://cpansearch.perl.org/src/AGRUNDMA/Catalyst-Engine-Apache-1.12/lib/Catalyst/Engine/Apache.pm

Автор: ginnie 23.9.2009, 11:43
gcc, $c->request->header() возвращает значение указанного заголовка из клиентского запроса. X-Forwarded-For - нестандартный HTTP заголовок. Список стандартных можно посмотреть в http://ru.wikipedia.org/wiki/Список_заголовков_HTTP.

P.S. HTTP_X_FORWARDED_FOR - это переменная окружения, которую устанавливает web-сервер при обработке запроса. В mod_perl возможно отключение формирования переменных окружения (всех или некоторых).

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)