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.
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.
MINIMAL_DNS
.
on
.
%% [temps] ligne-requête %% HTTP-status nom-fichier-script-CGIDans le cas où le script CGI ne peut pas du tout être exécuté, la trace contiendra deux lignes supplémentaires :
%%error message-d'erreurPar 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).
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.
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.
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.