Я запускаю Ubuntu 16.04 как виртуальную машину. Мне установили Apache2 2.4.18.
У меня есть папка с cgi сценариями, которые я хочу использовать. Чтобы сделать это, я поместил символьную ссылку на ту папку в/usr/lib/cgi-bin.
Когда я называю сценарий из Firefox localhost/cgi-bin/linkName/script.cgi
Я получаю 403 запрещенных ошибки.
Когда я копирую script.cgi в /usr/lib/cgi-bin
и назовите его с localhost/cgi-bin/script.cgi
, это выполняет, но дает программную ошибку, так как это испытывает недостаток в окружающих файлах и папках.
Я имею chmod 777
и ссылка и папка, с которой это связывается, но я все еще получаю ошибку.
Что еще может я делать кроме привыкания всех файлов и папок в /usr/lib/cgi-bin
?
Это - потому что символьная ссылка указывает на каталог, который расположен за пределами каталогов, перечисленных в Вашем "virtualhost".conf
файлы. Таким образом, необходимо записать необходимые директивы в Вашем /etc/apache2/apache2.conf
(или /etc/apache2/sites-available/*.conf
или /etc/apache2/conf-available/*.conf
) файл к доступу /usr/lib/cgi-bin
. Что-то как:
Alias /cgi-bin/linkName /usr/lib/cgi-bin
<Directory /usr/lib/cgi-bin>
Options +ExecCGI FollowSymLinks
DirectoryIndex disabled
AllowOverride None
Require all granted
# etc..
</Directory>
И возможно (но я не уверен, что это необходимо): sudo chown -R www-data:www-data /usr/lib/cgi-bin
.
, Если Вы делаете Alias /cgi-bin/linkName /usr/lib/cgi-bin
, Вы не должны делать символьную ссылку.