Назад | Перейти на главную страницу

Измените файл перед отправкой обработчику cgi

Я делаю переносную установку Apache для запуска Bugzilla. В этой установке есть переносимая версия Perl, и я хочу, чтобы mod_cgi использовал именно ее. Однако у mod_cgi нет способа настроить предполагаемый двоичный файл (или двоичные файлы для каждого типа файла), поэтому зависит от shebang, чтобы знать, что выполнять.

Моя проблема заключается в следующем: файлы perl Bugzilla имеют шебанг, который указывает на #!/usr/bin/perl -T и поскольку я нахожусь в Windows (к сожалению, с этим ничего не поделаешь) и Я хочу использовать конкретный дистрибутив Perl, предназначенный для сервера, мне нужно изменить файлы shebang.

Я знаю, что могу просто заранее запустить Perl-скрипт и просто заменить все shebang на те, которые указывают на правильный двоичный файл, но я бы предпочел более надежное решение. Я думал о фильтрах и mod_lua, но в Apache и его модулях, похоже, нет хуков или директив, которые позволяют обрабатывать файлы до их отправки в процесс cgi. Они могут обрабатывать только запросы, отправленные клиентом, или окончательный результат перед отправкой обратно клиенту.

Есть ли способ обработать файл с помощью Apache или модуля перед его отправкой в ​​процесс cgi?

Есть ли способ заставить cgi-процесс думать, что мой предполагаемый Perl на самом деле находится в /usr/bin/perl?

1-й вопрос: Нет, непросто. И пара известных мне способов сделать это всегда вызывает проблемы "в будущем".

2-й вопрос: Да. Вы можете просто создать папку «Диск»: \ usr \ bin и установить туда нужную версию Perl. Обратите внимание, что «Диск» должен совпадать с буквой диска, на котором работает ваша служба Apache. Тогда ваши сценарии будут использовать эту версию Perl без необходимости изменения.