Tout fichier pris en compte par le gestionnaire
cgi-script
sera traité en tant que script CGI et
exécuté par le serveur, sa sortie étant renvoyée au client. Les
fichiers sont associés à ce gestionnaire soit parce qu'ils possèdent
un nom contenant une extension définie par la directive
Comme introduction à l'utilisation des scripts CGI avec Apache, voir notre tutoriel Les contenus dynamiques avec CGI.
Le module
À des fins de compatibilité ascendante, le gestionnaire
cgi-script sera également activé pour tout fichier possédant le type
MIME application/x-httpd-cgi
. L'utilisation du type
MIME magic est obsolète.
Le serveur va définir les variables d'environnement CGI comme décrit dans la Spécification CGI, de la manière suivante :
off
. Par défaut, si la
directive On
.on
(elle est à off
par défaut), et si
une recherche DNS inverse sur l'adresse IP de l'hôte client
aboutit effectivement à un nom d'hôte.on
, et si l'hôte client supporte le
protocole ident. Notez que l'on ne peut accorder une confiance
aveugle au contenu de cette variable car il peut être aisément
falsifié, et si un mandataire s'intercale entre le client et le
serveur, il est totalement inutilisable.Ce module utilise aussi les fonctions de base ap_add_common_vars et ap_add_cgi_vars pour ajouter des variables d'environnement comme :
Pour une liste exhaustive de ces variables, vous pouvez écrire un script CGI basique qui extrait toutes les variables d'environnement passées par Apache selon un format adapté.
Le débogage des scripts CGI était difficile par le passé, principalement parce qu'il n'était pas possible d'étudier la sortie (sortie standard et erreurs) des scripts dont l'exécution échouait. Ces directives permettent une journalisation plus détaillée des erreurs.
Lorsqu'il est configuré, le journal des erreurs CGI enregistre la sortie de tout programme CGI dont l'exécution ne s'effectue pas correctement. Un script CGI dont l'exécution échoue provoque la journalisation d'une grande quantité d'informations. Les deux premières lignes possèdent toujours le format suivant :
Si le script CGI n'a pas pu démarrer, le fichier journal contiendra les deux lignes supplémentaires suivantes :
Par contre, si l'erreur provient du renvoi par le script d'informations incorrectes dans les en-têtes (dû souvent à une bogue du script), les informations suivantes sont journalisées :
(Les parties %stdout et %stderr seront absentes si le script n'a rien envoyé sur la sortie standard ou la sortie d'erreurs).
Cette directive permet de limiter le temps d'attente jusqu'à une prochaine sortie du programme CGI. Si ce temps est dépassé, le traitement de la requête et l'exécution du programme CGI sont terminés.
La directive
Ce journal sera ouvert par l'utilisateur sous lequel les
processus enfants s'exécutent, c'est à dire l'utilisateur spécifié
par la directive du serveur
Notez que l'on ne doit activer la journalisation des scripts qu'à des fins de débogage lors de l'écriture de scripts CGI, et non de manière permanente sur un serveur en production. Elle n'est pas optimisée en ce qui concerne la vitesse et l'efficacité, et peut présenter des problèmes de sécurité si on l'utilise dans un cadre autre que celui pour lequel elle a été conçue.
La directive
Cette directive limite la taille du corps de toute entité PUT ou POST qui sera enregistrée dans le journal, afin de prévenir une croissance trop importante et trop rapide du fichier journal due à la réception de corps de requête de grandes tailles. Cette directive modifie cette taille maximale, dont la valeur par défaut est de 1024 octets.