[APACHE DOCUMENTATION]

Apache HTTP Server Version 1.3

Module mod_cgi

Ce module est implémenté dans le fichier mod_cgi.c , et est compilé par défaut. Il met en place le mécanisme qui permet l'exécution de scripts CGI. Tout fichier de type MIME application/x-httpd-cgi sera traité par ce module.

Résumé

Tout fichier associé à un type MIME application/x-httpd-cgi ou à un gestionnaire (handler) cgi-script (à partir de la version 1.1 d'Apache) sera considéré comme un script CGI, et sera exécuté par le serveur, en routant sa sortie standard vers le client. Les fichiers acquièrent ce type soit parce que leur extension est associée à ce type par une directive AddType, ou parce qu'ils sont placés dans un répertoire pointé par une directive ScriptAlias.

Lorsque le serveur invoque un script CGI, une variable d'environnement appelée DOCUMENT_ROOT est définie. Cette variable sera initialisée avec la valeur courante associée à la directive DocumentRoot.

Variables d'environnement CGI

Le serveur définira des variables d'environnement CGI comme spécifié dans la spécification CGI, parmi lesquelles :
REMOTE_HOST
Définie seulement si le serveur n'a pas été compilé avec l'option MINIMAL_DNS.
REMOTE_IDENT
Seulement définie si IdentityCheck vaut on.
REMOTE_USER
Seulement définie si le script CGI est sujet à authentification.


Déboguage des CGI

Le déboguage de scripts CGI est traditionnellement laborieux, en grande partie parce qu'il est difficile d'accéder aux sorties standard (stdout et stderr) des scripts qui ne fonctionnent pas correctement. Ces directives, inclues à partir de la version 1.2 d'Apache, permettent une trace plus fine des erreurs lorsqu'elles surviennent.

Format des traces CGI

Lorsqu'elle est configurée, la fonction de trace d'erreurs CGI trace tout CGI qui ne s'exécute pas correctement. Chaque script CGI qui échoue provoque l'écriture d'un certain nombre de lignes dans le fichier de trace. Les deux première lignes sont toujours sous le format :
  %% [temps] ligne-requête
  %% HTTP-status nom-fichier-script-CGI
Dans le cas où le script CGI ne peut pas du tout être exécuté, la trace contiendra deux lignes supplémentaires :
  %%error
  message-d'erreur
Par contre, si l'erreur résulte de l'envoi par le script de mauvaises en-têtes (souvent dues à un bug interne), les informations suivantes sont enregistrées :
  %request
  Tous les champs d'en-tête de requête HTTP reçus
  entité POST ou PUT (suivant le cas)
  %response
  Tous les champs d'en-tête générés par le script CGI
  %stdout
  La sortie standard du CGI
  %stderr
  La sortie d'erreur standard du script CGI
(Les parties %stdout et %stderr peuvent ne pas apparaître si le script n'a rien généré ni sur la sortie standard, ni sur la sortie d'erreur).

Directives

Directive : ScriptLog

Syntaxe : ScriptLog nomFichier
Défaut : Aucun
Contexte : configuration ressource
Statut : mod_cgi

La directive ScriptLog définit le fichier de trace des erreurs CGI. Si aucune directive ScriptLog n'est définie, les erreurs ne sont pas tracées. Autrement, toute erreur CGI est enregistrée dans le fichier défini par l'argument nomFichier. Ce fichier peut être défini par son chemin d'accès absolu, ou relativement à la racine ServerRoot.

Cette trace sera ouverte au nom de l'utilisateur sous lequel le processus fils est exécuté, c'est-à-dire, l'utilisateur spécifié par la directive User principale. Ceci suppose que le répertoire dans lequel se situe cette trace ait les droits d'écriture définis pour cet utilisateur, à moins que le fichier de trace correspondant n'ait été créé manuellement et rendu inscriptible pour cet utilisateur. Si vous placez la trace de scripts dans votre répertoire principal des traces, NE CHANGEZ PAS les permissions sur ce répertoire attribuer les droits d'écriture par l'utilisateur sous lequel tourne le processus fils.

Notez que la trace des scripts doit rester essentiellement un outil de déboguage lors de l'écriture de scripts CGI, est n'est pas sensée être laissée active en permanence sur des serveurs en opération. Elle n'est ni optimisée en vitesse ni en efficacité, et peut provoquer des problèmes relatifs à la sécurité si elle est utilisée à un autre usage que ce pour quoi elle a été instaurée.

Directive : ScriptLogLength

Syntaxe : ScriptLogLength taille
Défaut : 10385760
Contexte : configuration ressource
Statut : mod_cgi

La directive ScriptLogLength peut être employée pour limiter la taille du fichier de trace des erreurs CGI. Comme cette trace enregistre un grand nombre d'informations à chaque échec d'un CGI (tous les champs d'en-têtes , toute la sortie des scripts), elle peut grossir assez conséquemment. Pour éviter des problèmes dus à une croissance non contrôlée, vous pourrez utiliser cette directive pour définir la taill maximale du fichier de trace CGI. Lorsque la taille de ce fichier excède cette limite, plus aucune information n'y sera enregistrée.

Directive : ScriptLogBuffer

Syntaxe : ScriptLogBuffer taille
Défaut : 1024
Contexte : configuration ressource
Statut : mod_cgi

La taille de toute les corps d'entités PUT ou POST enregistrés dans la trace est limitée, de nouveau pour éviter une croissance démesurée et trop rapide du fichier de trace lorsque des corps de taille importantes sont reçus. Par défaut, 1024 octets au plus sont enregistrés. Ceci peut être modifié par cette directive.


Apache HTTP Server Version 1.3

Index Home