[Résolu] ExecCGI ne fonctionne pas ( Apache/1.3.34)

Bonjour à tous,

Impossible de faire fonctionner les scripts CGI dans un répertoire autre
que /cgi-bin/

J’ai un script printenv

[code]#!/usr/bin/perl

printenv – demo CGI program which just prints its environment

print “Content-type: text/plain\n\n”;
foreach $var (sort(keys(%ENV))) {
$val = $ENV{$var};
$val =~ s|\n|\n|g;
$val =~ s|"|\"|g;
print “${var}=”${val}"\n";
} [/code]

qui fonctionne bien lorsqu’il est placé dans /usr/lib/cgi-bin (et donc accessible via localhost/cgi-bin/printenv)

J’ai dans mon httpd.conf la directive initiale

<Directory /> Options SymLinksIfOwnerMatch AllowOverride All </Directory>

où j’ai remplacé None par All, puis

<Directory /var/www/> Options Indexes ExecCGI Includes FollowSymLinks MultiViews AllowOverride All Order allow,deny Allow from all </Directory>

Si je place le même script dans /var/www avec les mêmes droits à 755,
le serveur me propose d’enregistrer ce foutu fichier, mais ne l’exécute pas :frowning:

J’ai esayé en réduisant la ligne options à ExecCGI, mais non…

Impossible aussi d’exécuter un script s’il est dans un répertoire utilisateur.

[code]
UserDir public_html

Control access to UserDir directories. The following is an example

for a site where these directories are restricted to read-only.

<Directory /home/*/public_html>
    # AllowOverride FileInfo AuthConfig Limit
    AllowOverride All

Options MultiViews ExecCGI Indexes SymLinksIfOwnerMatch IncludesNoExec

Order allow,deny

Allow from all

Order deny,allow

Deny from all

</Directory>

[/code]

Dans ce cas, j’ai d’abord essayé en ajoutant ExecCGI aux options, puis en commentant cette ligne et en plaçant cette directive dans un fichiers .htaccess, mais rien ne change. Je précise que ce fichier .htaccess est bien pris en compte, puisque selon que j’insère ou non l’option Indexes, mon serveur renvoie ou non la liste des fichiers de mon répertoire perso.

En fin de compte, examinant la partie qui concerne /cgi-bin, j’ai recopié le bloc suivant

<IfModule mod_alias.c> ScriptAlias /brol/ /home/gv/public_html/ <Directory /home/gv/public_html/> AllowOverride All Options ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> </IfModule>

et c’est le SEUL cas où ce script a bien été exécuté, mais dans ce cas, plus moyen d’accéder aux autres fichiers de ce répertoire, même en tapant leur url complète. Par exemple localhost/brol/logo.png me renvoie

Forbidden
You don’t have permission to access /brol/logo.png on this server.

et dans errors.log j’ai [Fri Dec 26 14:58:00 2008] [error] [client 127.0.0.1] file permissions deny server execution: /home/gv/public_html/logo.png

d’où je conclue que tous les fichiers de ce répertoire sont alors considérés comme des scripts à exécuter.

Bref, je pédale complètement…

J’ai récemment migré ce PC personnel d’une vieille Slackware vers une Debian Etch; tout fonctionnait normalement auparavant avec Apache, je ne comprends donc vraiment rien à ce qui se passe.

Merci d’avance pour tout éclaircissement,

Gauthier

Bon, j’ai trouvé, c’était la ligne

qui devait être décommentée pour qu’un cgi s’exécute en dehors d’un répertoire ScriptAliased.

:wink: