Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблема с mod_perl и текущей директорией, и может с чем-то ещё 
:(
    Опции темы
ochnev
Дата 7.11.2006, 00:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 253
Регистрация: 27.3.2006

Репутация: нет
Всего: нет



Кратко:
Как заставить mod_perl считать текущей директорией ту, в которой лежит скрипт, который сейчас исполняется?


Подробно:

У меня на локальной машине под Windows стоит набор из Perl и Apache с включённым mod_perl (который отсюда: 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
<Location /cgi-bin>
SetHandler perl-script
PerlHandler Apache::Registry
Options ExecCGI
allow from all
</Location>

--- фрагмент инструкции - конец ---

В результате 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 считать текущей директорией ту, в которой лежит скрипт, который сейчас исполняется?

PM MAIL   Вверх
amg
Дата 7.11.2006, 07:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1145
Регистрация: 3.8.2006
Где: Новосибирск

Репутация: 1
Всего: 50



Цитата(ochnev @  7.11.2006,  00:00 Найти цитируемый пост)
То есть mod_perl как-то меняет текущую директорию, и поэтому не находит мой модуль, лежащий в одной директории со скриптом.
Может, попробовать из $0 извлечь путь к скрипту и добавить его в @INC ?
Код

($script_dir)= $0 =~ /^(.*)[\/\\]/;
push @INC, $script_dir;


PM MAIL   Вверх
ochnev
Дата 7.11.2006, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 253
Регистрация: 27.3.2006

Репутация: нет
Всего: нет



Цитата(amg @ 7.11.2006,  07:48)
Цитата(ochnev @  7.11.2006,  00:00 Найти цитируемый пост)
То есть mod_perl как-то меняет текущую директорию, и поэтому не находит мой модуль, лежащий в одной директории со скриптом.
Может, попробовать из $0 извлечь путь к скрипту и добавить его в @INC ?
Код

($script_dir)= $0 =~ /^(.*)[\/\\]/;
push @INC, $script_dir;

Это не вариант. Это не решит проблему доступа к файлами из скриптов.
У меня там во многих местах процесс завязан на текущей директории и относительных путях.

PM MAIL   Вверх
JUmPER
Дата 8.11.2006, 09:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 196
Регистрация: 22.8.2006

Репутация: нет
Всего: 3



тогда содержать абсолютный путь к корню скриптов в файле конфига,
путь, относительно корня в самих скраптах
и юзать их вместе
в результате придётся менять только в одном месте

PS: правда вместо use придётся использовать require
--------------------
Существует 10 типов людей: те, которые понимают двоичную систему, и те, которые ее не понимаютСуществует 10 типов людей: те, кто понимают троичную систему, те, кто ее не понимают и те, кто путает ее с двоичной
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: разработка для Web | Следующая тема »


 




[ Время генерации скрипта: 0.0557 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.