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

Debian, Apache2, CGI: проблема с путями

У меня есть сценарий электронной почты формы perl в каталоге cgi-bin серверов (/ usr / lib / cgi-bin).

/ и т.д. / apache2 / сайты-включен / 000-по умолчанию

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
    AllowOverride None
    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    AddHandler cgi-script cgi pl
    Order allow,deny
    Allow from all
</Directory>

Проблема в путях.

html вызывает скрипт здесь:

<form name="Request" method="post" action="http://server-test.local/cgi-bin/formprocessorpro.pl" onsubmit="return checkWholeForm49874(this)">

Сюда передается директория с шаблонами и конфигами:

<input type="hidden" name="base_path" value="../contact" />

Путь к этой форме:

http://server-test.local/formstest/contact.htm

Независимо от того, какой вариант я пробую для base_path, я получаю сообщение об ошибке из скрипта formprocessor, что он не может найти каталог:

An error occurred when opening the Form Configuration File (../contact/form.cfg): No such file or directory.

Мне нужно переместить этот сценарий со старого сервера, настроенного предыдущим системным администратором, на новый сервер.

Поскольку cgi-bin автоматически связывается с / usr / lib / cgi-bin и связывается таким образом, что скрипт находится:

http://server-test.local/cgi-bin/formprocessorpro.pl

Я бы предположил, что, учитывая, что шаблоны находятся в корневом веб-каталоге в каталоге с именем contact, правильный путь будет:

../contact

Любые идеи? Я давно не баловался с CGI.

* ОБНОВИТЬ * Он работает, если я помещаю шаблоны в фактический каталог cgi-bin или поблизости от него. Debian связывает cgi-bin с / usr / lib / cgi-bin, и, по-видимому, почтовый скрипт формы не был проинформирован об этом. Если это решение вас устраивает, молчание приветствуется, в противном случае - разозлите меня и предложите другую стратегию. Спасибо!

* ОБНОВЛЕНИЕ пт. 2 * Пройденный путь работает, если / var / www /. Разве сценарии CGI не должны иметь возможность переходить по ссылкам в файлах конфигурации apache?

Бубнофф

Рабочий каталог CGI - это каталог, в котором он находится. «Base_path» в вашем CGI, вероятно, обращается к файлам через файловую систему, а не через какой-либо веб-сервер.

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