У меня есть сценарий электронной почты формы 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, вероятно, обращается к файлам через файловую систему, а не через какой-либо веб-сервер.
Вы никогда не упоминали, где на самом деле находятся файлы, которые нужно открыть, поэтому трудно сказать вам, какой будет приличный относительный путь.