На примере сапы
my $sape_id = 'aaaaaa';
1) require sprintf('%s/%s/SAPE.pm', $ENV{'DOCUMENT_ROOT'}, $sape_id);
2) require "$ENV{DOCUMENT_ROOT}/${sape_id}/SAPE.pm";
3) "$ENV{DOCUMENT_ROOT}/aaaaaaa/SAPE.pm" =~ /^(.+)$/; require $1;
Как мне кажется, 2 метод оптимальный. Вопрос, как там со всякими null-byte уязвимостями.
понедельник, 28 ноября 2011 г.
среда, 23 ноября 2011 г.
Особенности подключения модулей и сообщений об ошибках
Переносили сайт.
Проблема возникла с TrustLink:
Права в порядке. Добавили перед евалом
Вставили вместо евала прямое подключение
Так из-за абсолютно невменяемого показа ошибок диагностика заняла 3 часа.
Проблема возникла с TrustLink:
/var/www/site/htroot/ffffff at (eval 12) line 13. { { 'ffffff'; push @INC, "$ENV{DOCUMENT_ROOT}/$o->{TRUSTLINK_USER}"; -> eval("use TrustlinkClient;") or die $!; my $trustlink = new TrustlinkClient($o); undef($o); # use Data::Dumper; # print '<pre>',Dumper($trustlink),'</pre>'; print $trustlink->build_links(); }
Права в порядке. Добавили перед евалом
warn join ("\n", @INC);
Вывод нормальный, аномалий нет, путь к нужному модулю есть.Вставили вместо евала прямое подключение
require "$ENV{DOCUMENT_ROOT}/ffffff/TrustlinkClient.pm";
Оказалось, он не модуль не видит, а в модуле ошибка - нет библиотеки URI. Проблема была решена установкой libwww-perlТак из-за абсолютно невменяемого показа ошибок диагностика заняла 3 часа.
Подписаться на:
Сообщения (Atom)