masterspammer (masterspammer) wrote in ru_perl,
masterspammer
masterspammer
ru_perl

PerlRequire и все-все-все

Дано: модуль, обрабатывающий http-запросы. Модуль умный, работает с mod_perl2 а его брат-близнец - с mod_perl 1 соответственно. Где-то рядом startup.pl, в котором есть use lib ... (а там собственно и лежит искомый модуль и много других модулей). При указании PerlRequire в конфиге апача всё работает как и задумывалось.

Нужно: как-то подключить всё это счастье, имея в распоряжении .htaccess. Очень желательно - правильным с точки зрения mod_perl способом - PerlResponseHandler module

Что и как делалось:

1. был написан не модуль а просто скрипт, приспособленный для запуска из-под mod_perl - скорее CGI, написанный в соответствии с рекомендациями из документации mod_perlа. Работает, но хочется классического.

2. были попытки использования в .htaccess PerlRequire и всего выводка что появлся в mod_perl2 - PerlConfigRequire и т.д. Версия mod_perl 1 позволяет загрузить startup.pl, но модуль работает только один раз (по-видимому из-за того, что @INC переопределяется при запуске скрипта - см. ниже), что вместе с множественностью процессов создаёт прелестный эффект нестабильности и глючности. Под mod_perl 2 мне не удалось загружая startup.pl никак добиться того, чтобы Handler искался там, где было сказано в startup.pl

Про @INC - mod_perl сбрасывает @INC на изначальное значение - при первом запуске скрипта/модуля он "компилируется" и если тут указано use lib, то на этапе "компиляции" будут доступны библиотеки из указанных  мест. При повторном же запуске @INC будет таким, каким он был до use lib - и если скрипт где-то (в блоке eval "...", например) захочет загрузить какой-то ещё модуль, то не найдёт его. Так что или грузить ВСЁ и сразу (потом всё будет буквально "летать", но для CMS такое не стоит делать - может быть очень много модулей, из которых нужны далеко не все) или исправлять @INC при каждом запросе (или перед каждым eval"...").

Собственно вопрос - можно ли под mod_perl2 установить как Handler (мне нужно на директорию) модуль, лежащий НЕ в @INC по умолчанию, используя ТОЛЬКО .htaccess (а не конфиг апача)?
Subscribe

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 0 comments