Кратко:Как заставить mod_perl считать текущей директорией ту, в которой лежит скрипт, который сейчас исполняется?
Подробно:У меня на локальной машине под Windows стоит набор из Perl и Apache с включённым mod_perl (который
отсюда:
http://ftp://theoryx5.uwinnipeg.ca/pub/other/).
Я попробовал задействовать mod_perl н алокальном сайте.
Сделал как в этой инструкции:
http://library.mnwhost.ru/webdev/perl/mod_perl.php--- фрагмент инструкции - начало ---
Для этого мы изменяем httpd.conf:
# Это мы закомментируем
#### ScriptAlias /cgi-bin/ "/home/my-project.ru/cgi-bin/"
# А это добавим
PerlModule Apache::Registry
SetHandler perl-script
PerlHandler Apache::Registry
Options ExecCGI
allow from all
--- фрагмент инструкции - конец ---
В результате CGI-скрипты стало невозможно исполнять: получаю error 403.
Раскомментирую строчку (несмотря на инструкцию):
ScriptAlias /cgi-bin/ "/home/my-project.ru/cgi-bin/"
(путь, естественно, другой)
Уже лучше: error 500.
В логах пишется:
--- log - start ---
[Mon Nov 06 23:11:21 2006] [error] Can\'t locate DBOperations.pm in @INC (@INC contains: c:/perl_dev/Perl/lib c:/perl_dev/Perl/site/lib . c:/perl_dev/apache/ c:/
perl_dev/apache/lib/perl) at c:/perl_dev/apache/cgi-bin/rp/section.pl line 8.
BEGIN failed--compilation aborted at c:/perl_dev/apache/cgi-bin/rp/section.pl line 8.
--- log - start ---
Без mod_perl всё работает. То есть mod_perl как-то меняет текущую директорию, и поэтому не находит мой модуль, лежащий в одной директории со скриптом. То есть текущей директорией оказывается не та директория, в которой лежит скрипт, который сейчас исполняется.
Это подтверждается ещё и тем, что скрипт не может открыть файл с шаблоном страницы, который находится с ним в одной директории.
Как заставить mod_perl считать текущей директорией ту, в которой лежит скрипт, который сейчас исполняется?