J'utilise Ubuntu 16.04 en tant que machine virtuelle. J'ai Apache2 2.4.18 installé.
J'ai un dossier avec les scripts CGI que je veux utiliser. Pour ce faire, j'ai placé un lien symbolique vers ce dossier dans/usr/lib/cgi-bin.
Lorsque j'appelle le script depuis firefox localhost/cgi-bin/linkName/script.cgi
je reçois une erreur 403 interdite.
Lorsque je copie le script.cgi dans /usr/lib/cgi-bin
et que je l’appelle avec localhost/cgi-bin/script.cgi
, il s'exécute, mais génère une erreur logicielle car il manque les fichiers et les dossiers environnants.
J'ai chmod 777
à la fois le lien et le dossier vers lequel il est lié mais je reçois toujours l'erreur.
Que puis-je faire d'autre que copier tous les fichiers et dossiers dans /usr/lib/cgi-bin
?
C'est parce que le lien symbolique pointe vers un répertoire situé en dehors des répertoires répertoriés dans vos fichiers "virtualhost".conf
. Vous devez donc écrire les directives nécessaires dans votre fichier /etc/Apache2/Apache2.conf
(ou /etc/Apache2/sites-available/*.conf
ou /etc/Apache2/conf-available/*.conf
) pour accéder à /usr/lib/cgi-bin
. Quelque chose comme:
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>
Et peut-être (mais je ne suis pas sûr que ce soit nécessaire): Sudo chown -R www-data:www-data /usr/lib/cgi-bin
.
Si vous créez Alias /cgi-bin/linkName /usr/lib/cgi-bin
, vous n'avez pas besoin de créer de lien symbolique.