Différences entre les versions de « Apache/CGI »

22 octets supprimés ,  il y a 6 ans
aucun résumé de modification
Le CGI ({{w|Common Gateway Interface}}) est une norme permettant à Apache d'exécuter des programmes écrits en n'importe quel langage ([[Bash]], [[C]], [[Java]], [[Perl]], [[PHP]], [[Python]]...), du moment qu'il est exécutable et qu'il respecte certaines contraintes d'entrées/sortie.
 
===Configurer l'accès aux scripts CGI===
Pour qu'Apache prenne en charge les scripts, il est nécessaire d'effectuer un minimum de paramétrage dans la configuration du site.
 
==== ScriptAlias ====
La directive (de httpd.conf) :
ScriptAlias /cgi-bin/ ''/chemin des scripts/''
En fait le chemin <code>/cgi-bin/</code> n'existe pas vraiment, il est dirigé vers le chemin des scripts défini par la directive, et cela permet d'écrire des URL comme <code><nowiki>http://serveur/cgi-bin/mon_script</nowiki></code>.
 
==== ExecCGI ====
La clause suivante active l'option <code>ExecCGI</code> dans <code>/var/www/cgi-bin</code>, ce qui autorise Apache à exécuter les scripts sur le serveur :
<Directory /var/www/cgi-bin>
L'appel à un script essai.cgi sera effectué par l'URL : <code><nowiki>http://serveur/cgi-bin/essai.cgi</nowiki></code>
 
==== AddHandler ====
Cette clause permet de choisir les extensions de fichiers qui seront autorisés, ex :
AddHandler cgi-script .cgi .exe .pl .py .vbs
 
==== Récapitulatif ====
Exemple complet sur Windows, dans la configuration Apache :
ScriptAlias /cgi-bin/ "E:/www/cgi-bin/"
AddHandler cgi-script .cgi .exe .pl .py .vbs
 
===Écrire un programme CGI===
La contrainte principale concerne la sortie du programme. Si un programme CGI génère des données sur sa sortie standard, il doit les précéder d'un en-tête HTTP permettant de les identifier.
 
==== Bash ====
Voici un exemple de programme CGI écrit en bash :
<source lang="bash">
Ce script génère une page HTML.
 
==== Perl ====
<source lang="perl">
#!c:/perl/perl/bin/perl.exe -w
</source>
 
==== Python ====
<source lang="python">
#!C:\Program Files (x86)\Python\python.exe
{{article détaillé|Programmation Python/L'interface CGI}}
 
==== VBS ====
Pour Windows<ref>http://wiki.uniformserver.com/index.php/CGI:_VBScript_CGI</ref>.
<source lang="vb">
</source>
 
=== Erreurs connues ===
* {{rouge|Error 500 ''Erreur du serveur!''}} : remplacer un <code>Deny from all</code> par un <code>Allow from all</code>.
* {{rouge|Error 403 ''Accès interdit''}} : lister ce répertoire est interdit, il faut donc connaitre l'URL des fichiers qu'il contient.