Bonjour,
Je souhaiterais avoir des précisions sur la partie CGI de mon fichier de configuration /etc/apache2/sites-available/default dont voici son contenu :
[code] <VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www
Options FollowSymLinks
AllowOverride None
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
#---------- PHP ------------------------------------------------------------#
# le /www est un alias vers /usr/bin. Donc, les pages php du /www lanceront
# l'exécutable php-cgi qui se trouve dans /usr/bin.
ScriptAlias /www /usr/bin
AddHandler application/x-httpd-php5 php
Action application/x-httpd-php5 /www/php-cgi
#---------------------------------------------------------------------------#
#---------- CGI ------------------------------------------------------------#
#---------------------------------------------------------------------------#
# Où doivent exclusivement s'exécuter les scripts CGI, ici dans le /var/www/cgi
# L'url est http://server.tld/cgi/
ScriptAlias /cgi /var/www/cgi
# Avec ou sans le <Directory> ci dessous ca fonctionne quand même....
<Directory "/var/www/cgi">
AllowOverride none
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
allow from all
</Directory>
#---------------------------------------------------------------------------#
#---------------------------------------------------------------------------#
#---------------------------------------------------------------------------#
#---------- Personnification des logs d'erreur -----------------------------#
ErrorLog ${APACHE_LOG_DIR}/error-defaultSite.log
# Possible values include: debug, info, notice, warn, error, crit,
LogLevel warn
#---------- Personnification des logs d'accès ------------------------------#
CustomLog ${APACHE_LOG_DIR}/access-defaultSite.log combined
[/code]
Je ne comprend pas l’intérêt de la directive Options +ExecCGI qui pourtant d’après la doc d’Apache permet d’exécuter les scripts dans le répertoire voulu :
<Directory "/var/www/cgi">
AllowOverride none
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch <--------------------- ??
Order allow,deny
allow from all
</Directory>
Si je la supprime, les scripts cgi s’exécutent quand même dans /var/www/cgi.
Si je change le répertoire cgi/ en JOHN/ :
<Directory "/var/www/JOHN">
AllowOverride none
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch <--------------------- ??
Order allow,deny
allow from all
</Directory>
aucun script ne s’exécutera à l’intérieur de celui-ci (alors qu’ils le devrait ? Options +ExecCGI est fait exprès pour ça ?)
C’est comme si la directive ScriptAlias /cgi /var/www/cgi au dessus était la seule qui comptait vraiment.
Je ne vois donc pas l’utilité de Options +ExecCGI.
Une dernière question : J’ai 2 fois la directive ScriptAlias dans mon fichier default, est-ce “propre” point de vue configuration ?
Un autre dernière question : j’ai remarqué que mon dossier cgi/ est en forbidden accès par défaut, pas de listing donc, c’est une sécurité d’Apache qui se met en place dès qu’on utilise la directive ScriptAlias ? (ici ScriptAlias /cgi /var/www/cgi).
Merci beaucoup !