]> granicus.if.org Git - apache/blob - docs/manual/mod/mod_cgi.xml.fr
Prelim docs
[apache] / docs / manual / mod / mod_cgi.xml.fr
1 <?xml version="1.0"?>
2 <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
3 <?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
4 <!-- English Revision : 1330964 -->
5 <!-- French translation : Lucien GENTIS -->
6 <!-- Reviewed by : Vincent Deffontaines -->
7
8 <!--
9  Licensed to the Apache Software Foundation (ASF) under one or more
10  contributor license agreements.  See the NOTICE file distributed with
11  this work for additional information regarding copyright ownership.
12  The ASF licenses this file to You under the Apache License, Version 2.0
13  (the "License"); you may not use this file except in compliance with
14  the License.  You may obtain a copy of the License at
15
16      http://www.apache.org/licenses/LICENSE-2.0
17
18  Unless required by applicable law or agreed to in writing, software
19  distributed under the License is distributed on an "AS IS" BASIS,
20  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21  See the License for the specific language governing permissions and
22  limitations under the License.
23 -->
24
25 <modulesynopsis metafile="mod_cgi.xml.meta">
26
27 <name>mod_cgi</name>
28 <description>Ex&eacute;cution des scripts CGI</description>
29 <status>Base</status>
30 <sourcefile>mod_cgi.c</sourcefile>
31 <identifier>cgi_module</identifier>
32
33 <summary>
34     <p>Tout fichier pris en compte par le gestionnaire
35     <code>cgi-script</code> sera trait&eacute; en tant que script CGI et
36     ex&eacute;cut&eacute; par le serveur, sa sortie &eacute;tant renvoy&eacute;e au client. Les
37     fichiers sont associ&eacute;s &agrave; ce gestionnaire soit parce qu'ils poss&egrave;dent
38     un nom contenant une extension d&eacute;finie par la directive <directive
39     module="mod_mime">AddHandler</directive>, soit parce qu'ils se
40     situent dans un r&eacute;pertoire d&eacute;fini par une directive <directive
41     module="mod_alias">ScriptAlias</directive>.</p>
42
43     <p>Comme introduction &agrave; l'utilisation des scripts CGI avec Apache,
44     voir notre tutoriel <a href="../howto/cgi.html">Les contenus
45     dynamiques avec CGI</a>.</p>
46
47     <p>Le module <module>mod_cgid</module> doit &ecirc;tre utilis&eacute; &agrave; la place
48     du module <module>mod_cgi</module> lorsqu'on utilise un module MPM
49     multi-thread&eacute; sous Unix. Vus de l'utilisateur, les deux modules
50     sont pratiquement identiques.</p>
51
52     <p>&Agrave; des fins de compatibilit&eacute; ascendante, le gestionnaire
53     cgi-script sera &eacute;galement activ&eacute; pour tout fichier poss&eacute;dant le type
54     MIME <code>application/x-httpd-cgi</code>. L'utilisation du type
55     MIME magic est obsol&egrave;te.</p>
56 </summary>
57
58 <seealso><directive module="core">AcceptPathInfo</directive></seealso>
59 <seealso><directive module="core">Options</directive> ExecCGI</seealso>
60 <seealso><directive module="mod_alias">ScriptAlias</directive></seealso>
61 <seealso><directive module="mod_mime">AddHandler</directive></seealso>
62 <seealso><a href="../suexec.html">Ex&eacute;cuter des programmes CGI sous des
63 utilisateurs diff&eacute;rents</a></seealso>
64 <seealso><a href="http://www.ietf.org/rfc/rfc3875">La sp&eacute;cification
65 CGI</a></seealso>
66
67 <section id="env"><title>Les variables d'environnement CGI</title>
68     <p>Le serveur va d&eacute;finir les variables d'environnement CGI comme
69     d&eacute;crit dans la <a
70     href="http://www.ietf.org/rfc/rfc3875">Sp&eacute;cification CGI</a>, de la
71     mani&egrave;re suivante :</p>
72
73     <dl>
74       <dt>PATH_INFO</dt>
75
76       <dd>Cette variable ne sera pas disponible si la directive
77       <directive module="core">AcceptPathInfo</directive> est
78       explicitement d&eacute;finie &agrave; <code>off</code>. Par d&eacute;faut, si la
79       directive <directive>AcceptPathInfo</directive> n'est pas d&eacute;finie,
80       <module>mod_cgi</module> acceptera des informations de chemin (en
81       ajoutant /infos/chemin apr&egrave;s le nom du script dans l'URI), alors
82       que le serveur de base retournera une erreur 404 NOT FOUND pour
83       les requ&ecirc;tes contenant des informations de chemin suppl&eacute;mentaires.
84       Ne pas d&eacute;finir la directive <directive>AcceptPathInfo</directive>
85       a le m&ecirc;me effet sur les requ&ecirc;tes avec <module>mod_cgi</module> que
86       de la d&eacute;finir &agrave; <code>On</code>.</dd>
87
88       <dt>REMOTE_HOST</dt>
89
90       <dd>Cette variable ne sera d&eacute;finie que si la directive <directive
91       module="core">HostnameLookups</directive> est d&eacute;finie &agrave;
92       <code>on</code> (elle est &agrave; <code>off</code> par d&eacute;faut), et si
93       une recherche DNS inverse sur l'adresse IP de l'h&ocirc;te client
94       aboutit effectivement &agrave; un nom d'h&ocirc;te.</dd>
95
96       <dt>REMOTE_IDENT</dt>
97
98       <dd>Cette variable ne sera d&eacute;finie que si la directive <directive
99       module="mod_ident">IdentityCheck</directive>
100       est d&eacute;finie &agrave; <code>on</code>, et si l'h&ocirc;te client supporte le
101       protocole ident. Notez que l'on ne peut accorder une confiance
102       aveugle au contenu de cette variable car il peut &ecirc;tre ais&eacute;ment
103       falsifi&eacute;, et si un mandataire s'intercale entre le client et le
104       serveur, il est totalement inutilisable.</dd>
105
106       <dt>REMOTE_USER</dt>
107
108       <dd>Cette variable ne sera d&eacute;finie que si le script CGI fait
109       l'objet d'une authentification.</dd>
110     </dl>
111 </section>
112
113 <section id="cgi-debug"><title>D&eacute;bogage des scripts CGI</title>
114     <p>Le d&eacute;bogage des scripts CGI &eacute;tait difficile par le pass&eacute;,
115     principalement parce qu'il n'&eacute;tait pas possible d'&eacute;tudier la sortie
116     (sortie standard et erreurs) des scripts dont l'ex&eacute;cution &eacute;chouait.
117     Ces directives permettent une journalisation plus d&eacute;taill&eacute;e des
118     erreurs.</p>
119
120     <section><title>Format du fichier journal CGI</title>
121       <p>Lorsqu'il est configur&eacute;, le journal des erreurs CGI enregistre
122       la sortie de tout programme CGI dont l'ex&eacute;cution ne s'effectue pas
123       correctement. Un script CGI dont l'ex&eacute;cution &eacute;choue provoque la
124       journalisation d'une grande quantit&eacute; d'informations. Les deux
125       premi&egrave;res lignes poss&egrave;dent toujours le format suivant :</p>
126
127       <example>
128         %% [<var>date</var>] <var>requ&ecirc;te</var><br />
129         %% <var>&eacute;tat HTTP</var> <var>nom du script CGI</var>
130       </example>
131
132       <p>Si le script CGI n'a pas pu d&eacute;marrer, le fichier journal
133       contiendra les deux lignes suppl&eacute;mentaires suivantes :</p>
134
135       <example>
136         %%erreur<br />
137         <var>message d'erreur</var>
138       </example>
139
140       <p>Par contre, si l'erreur provient du renvoi par le script
141       d'informations incorrectes dans les en-t&ecirc;tes (d&ucirc; souvent &agrave; une
142       bogue du script), les informations suivantes sont journalis&eacute;es
143       :</p>
144
145       <example>
146         %requ&ecirc;te<br />
147         <var>Tous les en-t&ecirc;tes de requ&ecirc;te HTTP re&ccedil;us</var><br />
148         <var>Les entit&eacute;s POST ou PUT (s'il en existe)</var><br />
149         %r&eacute;ponse<br />
150         <var>Tous les en-t&ecirc;tes g&eacute;n&eacute;r&eacute;s par le script CGI</var><br />
151         %stdout<br />
152         <var>la sortie standard CGI</var><br />
153         %stderr<br />
154         <var>la sortie d'erreurs standard CGI</var><br />
155       </example>
156
157       <p>(Les parties %stdout et %stderr seront absentes si le script
158       n'a rien envoy&eacute; sur la sortie standard ou la sortie
159       d'erreurs).</p>
160     </section>
161 </section>
162
163 <directivesynopsis>
164 <name>ScriptLog</name>
165 <description>Chemin du fichier journal des erreurs du script
166 CGI</description>
167 <syntax>ScriptLog <var>chemin fichier</var></syntax>
168 <contextlist><context>server config</context>
169 <context>virtual host</context></contextlist>
170 <modulelist><module>mod_cgi</module><module>mod_cgid</module>
171 </modulelist>
172
173 <usage>
174     <p>La directive <directive>ScriptLog</directive> d&eacute;finit
175     le chemin du fichier journal des erreurs du script CGI. Si cette
176     directive n'est pas d&eacute;finie, aucune journalisation des erreurs n'est
177     effectu&eacute;e. Si elle est d&eacute;finie, toute erreur CGI sera enregistr&eacute;e
178     dans le fichier dont le nom est fourni en argument. S'il s'agit d'un
179     chemin de fichier relatif, il est consid&eacute;r&eacute; par rapport au
180     r&eacute;pertoire d&eacute;fini par la directive <directive
181     module="core">ServerRoot</directive>.
182     </p>
183
184     <example><title>Exemple</title>
185     <highlight language="config">
186       ScriptLog logs/cgi_log
187       </highlight>
188     </example>
189
190     <p>Ce journal sera ouvert par l'utilisateur sous lequel les
191     processus enfants s'ex&eacute;cutent, c'est &agrave; dire l'utilisateur sp&eacute;cifi&eacute;
192     par la directive du serveur <directive
193     module="mod_unixd">User</directive>. Ceci implique que soit le
194     r&eacute;pertoire dans lequel se trouve le journal doit &ecirc;tre accessible en
195     &eacute;criture pour cet utilisateur, soit le fichier doit &ecirc;tre cr&eacute;&eacute;
196     manuellement et accessible en &eacute;criture pour cet utilisateur. Si vous
197     placez le journal du script dans votre r&eacute;pertoire principal des
198     journaux, ne modifiez <strong>PAS</strong> les permissions de ce
199     dernier afin de le le rendre accessible en &eacute;criture par
200     l'utilisateur sous lequel les processus enfants s'ex&eacute;cutent.</p>
201
202     <p>Notez que l'on ne doit activer la journalisation des scripts
203     qu'&agrave; des fins de d&eacute;bogage lors de l'&eacute;criture de scripts CGI, et non
204     de mani&egrave;re permanente sur un serveur en production. Elle n'est pas
205     optimis&eacute;e en ce qui concerne la vitesse et l'efficacit&eacute;, et peut
206     pr&eacute;senter des probl&egrave;mes de s&eacute;curit&eacute; si on l'utilise dans un cadre
207     autre que celui pour lequel elle a &eacute;t&eacute; con&ccedil;ue.</p>
208 </usage>
209 </directivesynopsis>
210
211 <directivesynopsis>
212 <name>ScriptLogLength</name>
213 <description>Taille maximale du fichier journal des scripts
214 CGI</description>
215 <syntax>ScriptLogLength <var>octets</var></syntax>
216 <default>ScriptLogLength 10385760</default>
217 <contextlist><context>server config</context>
218 <context>virtual host</context></contextlist>
219 <modulelist><module>mod_cgi</module><module>mod_cgid</module>
220 </modulelist>
221
222 <usage>
223     <p>La directive <directive>ScriptLogLength</directive>
224     d&eacute;finit la taille maximale du fichier journal des scripts CGI. Comme
225     le fichier journal accumule une grande quantit&eacute; d'informations par
226     erreur CGI (tous les en-t&ecirc;tes de la requ&ecirc;te, toutes les sorties du
227     script), il peut vite atteindre une grande taille. En limitant la
228     taille du fichier, cette directive permet d'&eacute;viter les probl&egrave;mes que
229     causerait sa croissance sans limites. Lorsque le fichier a atteint
230     cette taille maximale, plus aucune information n'y est
231     enregistr&eacute;e.</p>
232 </usage>
233 </directivesynopsis>
234
235 <directivesynopsis>
236 <name>ScriptLogBuffer</name>
237 <description>Taille maximale des requ&ecirc;tes PUT ou POST qui seront
238 enregistr&eacute;es dans le journal du script</description>
239 <syntax>ScriptLogBuffer <var>octets</var></syntax>
240 <default>ScriptLogBuffer 1024</default>
241 <contextlist><context>server config</context>
242 <context>virtual host</context></contextlist>
243 <modulelist><module>mod_cgi</module><module>mod_cgid</module>
244 </modulelist>
245
246 <usage>
247     <p>Cette directive limite la taille du corps de toute
248     entit&eacute; PUT ou POST qui sera enregistr&eacute;e dans le journal, afin
249     de pr&eacute;venir une croissance trop importante et trop rapide du fichier
250     journal due &agrave; la r&eacute;ception de corps de requ&ecirc;te de grandes tailles.
251     Cette directive modifie cette taille maximale, dont la
252     valeur par d&eacute;faut est de 1024 octets.</p>
253 </usage>
254 </directivesynopsis>
255
256 </modulesynopsis>