~ubuntu-branches/ubuntu/feisty/apache2/feisty

« back to all changes in this revision

Viewing changes to docs/manual/mod/mod_cgi.html.en

  • Committer: Bazaar Package Importer
  • Author(s): Andreas Barth
  • Date: 2006-12-09 21:05:45 UTC
  • mto: This revision was merged to the branch mainline in revision 12.
  • Revision ID: james.westby@ubuntu.com-20061209210545-l2c6ssmet17xa2o3
ImportĀ upstreamĀ versionĀ 2.2.3

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<?xml version="1.0" encoding="ISO-8859-1"?>
 
2
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 
3
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><!--
 
4
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 
5
              This file is generated from xml source: DO NOT EDIT
 
6
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 
7
      -->
 
8
<title>mod_cgi - Apache HTTP Server</title>
 
9
<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
 
10
<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
 
11
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />
 
12
<link href="../images/favicon.ico" rel="shortcut icon" /></head>
 
13
<body>
 
14
<div id="page-header">
 
15
<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
 
16
<p class="apache">Apache HTTP Server Version 2.2</p>
 
17
<img alt="" src="../images/feather.gif" /></div>
 
18
<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
 
19
<div id="path">
 
20
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.2</a> &gt; <a href="./">Modules</a></div>
 
21
<div id="page-content">
 
22
<div id="preamble"><h1>Apache Module mod_cgi</h1>
 
23
<div class="toplang">
 
24
<p><span>Available Languages: </span><a href="../en/mod/mod_cgi.html" title="English">&nbsp;en&nbsp;</a> |
 
25
<a href="../ja/mod/mod_cgi.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
 
26
<a href="../ko/mod/mod_cgi.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>
 
27
</div>
 
28
<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Execution of CGI scripts</td></tr>
 
29
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Base</td></tr>
 
30
<tr><th><a href="module-dict.html#ModuleIdentifier">Moduleļæ½Identifier:</a></th><td>cgi_module</td></tr>
 
31
<tr><th><a href="module-dict.html#SourceFile">Sourceļæ½File:</a></th><td>mod_cgi.c</td></tr></table>
 
32
<h3>Summary</h3>
 
33
 
 
34
    
 
35
 
 
36
    <p>Any file that has the mime type
 
37
    <code>application/x-httpd-cgi</code> or handler
 
38
    <code>cgi-script</code> (Apache 1.1 or later) will be treated
 
39
    as a CGI script, and run by the server, with its output being
 
40
    returned to the client. Files acquire this type either by
 
41
    having a name containing an extension defined by the
 
42
    <code class="directive"><a href="../mod/mod_mime.html#addtype">AddType</a></code> directive, or by being
 
43
    in a <code class="directive"><a href="../mod/mod_alias.html#scriptalias">ScriptAlias</a></code>
 
44
    directory.</p>
 
45
 
 
46
    <p>When the server invokes a CGI script, it will add a variable
 
47
    called <code>DOCUMENT_ROOT</code> to the environment. This
 
48
    variable will contain the value of the
 
49
    <code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code> configuration
 
50
    variable.</p>
 
51
 
 
52
    <p>For an introduction to using CGI scripts with Apache, see
 
53
    our tutorial on <a href="../howto/cgi.html">Dynamic Content
 
54
    With CGI</a>.</p>
 
55
 
 
56
    <p>When using a multi-threaded MPM under unix, the module
 
57
    <code class="module"><a href="../mod/mod_cgid.html">mod_cgid</a></code> should be used in place of
 
58
    this module. At the user level, the two modules are essentially
 
59
    identical.</p>
 
60
</div>
 
61
<div id="quickview"><h3 class="directives">Directives</h3>
 
62
<ul id="toc">
 
63
<li><img alt="" src="../images/down.gif" /> <a href="#scriptlog">ScriptLog</a></li>
 
64
<li><img alt="" src="../images/down.gif" /> <a href="#scriptlogbuffer">ScriptLogBuffer</a></li>
 
65
<li><img alt="" src="../images/down.gif" /> <a href="#scriptloglength">ScriptLogLength</a></li>
 
66
</ul>
 
67
<h3>Topics</h3>
 
68
<ul id="topics">
 
69
<li><img alt="" src="../images/down.gif" /> <a href="#env">CGI Environment variables</a></li>
 
70
<li><img alt="" src="../images/down.gif" /> <a href="#cgi-debug">CGI Debugging</a></li>
 
71
</ul><h3>See also</h3>
 
72
<ul class="seealso">
 
73
<li><code class="directive"><a href="../mod/core.html#acceptpathinfo">AcceptPathInfo</a></code></li>
 
74
<li><code class="directive"><a href="../mod/core.html#options">Options</a></code></li>
 
75
<li><code class="directive"><a href="../mod/mod_alias.html#scriptalias">ScriptAlias</a></code></li>
 
76
<li><code class="directive"><a href="../mod/mod_mime.html#addhandler">AddHandler</a></code></li>
 
77
<li><a href="../suexec.html">Running CGI programs under different
 
78
    user IDs</a></li>
 
79
<li><a href="http://hoohoo.ncsa.uiuc.edu/cgi/">CGI Specification</a></li>
 
80
</ul></div>
 
81
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
 
82
<div class="section">
 
83
<h2><a name="env" id="env">CGI Environment variables</a></h2>
 
84
    <p>The server will set the CGI environment variables as described
 
85
    in the <a href="http://hoohoo.ncsa.uiuc.edu/cgi/">CGI
 
86
    specification</a>, with the following provisions:</p>
 
87
 
 
88
    <dl>
 
89
      <dt>PATH_INFO</dt>
 
90
 
 
91
      <dd>This will not be available if the <code class="directive"><a href="../mod/core.html#acceptpathinfo">AcceptPathInfo</a></code> directive is explicitly set to
 
92
      <code>off</code>.  The default behavior, if <code class="directive">AcceptPathInfo</code> is not given, is that <code class="module"><a href="../mod/mod_cgi.html">mod_cgi</a></code> will accept path info (trailing <code>
 
93
      /more/path/info</code> following the script filename in the URI),
 
94
      while the core server will return a 404 NOT FOUND error for requests
 
95
      with additional path info. Omitting the <code class="directive">AcceptPathInfo</code> directive has the same effect as setting
 
96
      it <code>On</code> for <code class="module"><a href="../mod/mod_cgi.html">mod_cgi</a></code> requests.</dd>
 
97
 
 
98
      <dt>REMOTE_HOST</dt>
 
99
 
 
100
      <dd>This will only be set if <code class="directive"><a href="../mod/core.html#hostnamelookups">HostnameLookups</a></code> is set to <code>on</code> (it
 
101
      is off by default), and if a reverse DNS lookup of the accessing
 
102
      host's address indeed finds a host name.</dd>
 
103
 
 
104
      <dt>REMOTE_IDENT</dt>
 
105
 
 
106
      <dd>This will only be set if <code class="directive"><a href="../mod/core.html#identitycheck">IdentityCheck</a></code> is set to
 
107
      <code>on</code> and the accessing host supports the ident
 
108
      protocol. Note that the contents of this variable cannot be
 
109
      relied upon because it can easily be faked, and if there is a
 
110
      proxy between the client and the server, it is usually
 
111
      totally useless.</dd>
 
112
 
 
113
      <dt>REMOTE_USER</dt>
 
114
 
 
115
      <dd>This will only be set if the CGI script is subject to
 
116
      authentication.</dd>
 
117
    </dl>
 
118
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
 
119
<div class="section">
 
120
<h2><a name="cgi-debug" id="cgi-debug">CGI Debugging</a></h2>
 
121
    <p>Debugging CGI scripts has traditionally been difficult, mainly
 
122
    because it has not been possible to study the output (standard
 
123
    output and error) for scripts which are failing to run
 
124
    properly. These directives, included in Apache 1.2 and later,
 
125
    provide more detailed logging of errors when they occur.</p>
 
126
 
 
127
    <h3>CGI Logfile Format</h3>
 
128
      <p>When configured, the CGI error log logs any CGI which does not
 
129
      execute properly. Each CGI script which fails to operate causes
 
130
      several lines of information to be logged. The first two lines
 
131
      are always of the format:</p>
 
132
 
 
133
      <div class="example"><p><code>
 
134
        %% [<var>time</var>] <var>request-line</var><br />
 
135
        %% <var>HTTP-status</var> <var>CGI-script-filename</var>
 
136
      </code></p></div>
 
137
 
 
138
      <p>If the error is that CGI script cannot be run, the log file
 
139
      will contain an extra two lines:</p>
 
140
 
 
141
      <div class="example"><p><code>
 
142
        %%error<br />
 
143
        <var>error-message</var>
 
144
      </code></p></div>
 
145
 
 
146
      <p>Alternatively, if the error is the result of the script
 
147
      returning incorrect header information (often due to a bug in
 
148
      the script), the following information is logged:</p>
 
149
 
 
150
      <div class="example"><p><code>
 
151
        %request<br />
 
152
        <var>All HTTP request headers received</var><br />
 
153
        <var>POST or PUT entity (if any)</var><br />
 
154
        %response<br />
 
155
        <var>All headers output by the CGI script</var><br />
 
156
        %stdout<br />
 
157
        <var>CGI standard output</var><br />
 
158
        %stderr<br />
 
159
        <var>CGI standard error</var><br />
 
160
      </code></p></div>
 
161
 
 
162
      <p>(The %stdout and %stderr parts may be missing if the script did
 
163
      not output anything on standard output or standard error).</p>
 
164
    
 
165
</div>
 
166
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
 
167
<div class="directive-section"><h2><a name="ScriptLog" id="ScriptLog">ScriptLog</a> <a name="scriptlog" id="scriptlog">Directive</a></h2>
 
168
<table class="directive">
 
169
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Location of the CGI script error logfile</td></tr>
 
170
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ScriptLog <var>file-path</var></code></td></tr>
 
171
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
 
172
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
 
173
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td><code class="module"><a href="../mod/mod_cgi.html">mod_cgi</a></code>, <code class="module"><a href="../mod/mod_cgid.html">mod_cgid</a></code></td></tr>
 
174
</table>
 
175
    <p>The <code class="directive">ScriptLog</code> directive sets the CGI
 
176
    script error logfile. If no <code class="directive">ScriptLog</code> is given,
 
177
    no error log is created. If given, any CGI errors are logged into the
 
178
    filename given as argument. If this is a relative file or path it is
 
179
    taken relative to the <code class="directive"><a href="../mod/core.html#serverroot">ServerRoot</a></code>.
 
180
    </p>
 
181
 
 
182
    <div class="example"><h3>Example</h3><p><code>
 
183
      ScriptLog logs/cgi_log
 
184
    </code></p></div>
 
185
 
 
186
    <p>This log will be opened as the user the child processes run
 
187
    as, <em>i.e.</em> the user specified in the main <code class="directive"><a href="../mod/mpm_common.html#user">User</a></code> directive. This means that
 
188
    either the directory the script log is in needs to be writable
 
189
    by that user or the file needs to be manually created and set
 
190
    to be writable by that user. If you place the script log in
 
191
    your main logs directory, do <strong>NOT</strong> change the
 
192
    directory permissions to make it writable by the user the child
 
193
    processes run as.</p>
 
194
 
 
195
    <p>Note that script logging is meant to be a debugging feature
 
196
    when writing CGI scripts, and is not meant to be activated
 
197
    continuously on running servers. It is not optimized for speed
 
198
    or efficiency, and may have security problems if used in a
 
199
    manner other than that for which it was designed.</p>
 
200
 
 
201
</div>
 
202
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
 
203
<div class="directive-section"><h2><a name="ScriptLogBuffer" id="ScriptLogBuffer">ScriptLogBuffer</a> <a name="scriptlogbuffer" id="scriptlogbuffer">Directive</a></h2>
 
204
<table class="directive">
 
205
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Maximum amount of PUT or POST requests that will be recorded
 
206
in the scriptlog</td></tr>
 
207
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ScriptLogBuffer <var>bytes</var></code></td></tr>
 
208
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>ScriptLogBuffer 1024</code></td></tr>
 
209
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
 
210
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
 
211
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td><code class="module"><a href="../mod/mod_cgi.html">mod_cgi</a></code>, <code class="module"><a href="../mod/mod_cgid.html">mod_cgid</a></code></td></tr>
 
212
</table>
 
213
    <p>The size of any PUT or POST entity body that is logged to
 
214
    the file is limited, to prevent the log file growing too big
 
215
    too quickly if large bodies are being received. By default, up
 
216
    to 1024 bytes are logged, but this can be changed with this
 
217
    directive.</p>
 
218
 
 
219
</div>
 
220
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
 
221
<div class="directive-section"><h2><a name="ScriptLogLength" id="ScriptLogLength">ScriptLogLength</a> <a name="scriptloglength" id="scriptloglength">Directive</a></h2>
 
222
<table class="directive">
 
223
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Size limit of the CGI script logfile</td></tr>
 
224
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ScriptLogLength <var>bytes</var></code></td></tr>
 
225
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>ScriptLogLength 10385760</code></td></tr>
 
226
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
 
227
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
 
228
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td><code class="module"><a href="../mod/mod_cgi.html">mod_cgi</a></code>, <code class="module"><a href="../mod/mod_cgid.html">mod_cgid</a></code></td></tr>
 
229
</table>
 
230
    <p><code class="directive">ScriptLogLength</code> can be used to limit the
 
231
    size of the CGI script logfile. Since the logfile logs a lot of
 
232
    information per CGI error (all request headers, all script output)
 
233
    it can grow to be a big file. To prevent problems due to unbounded
 
234
    growth, this directive can be used to set an maximum file-size for
 
235
    the CGI logfile. If the file exceeds this size, no more
 
236
    information will be written to it.</p>
 
237
 
 
238
</div>
 
239
</div>
 
240
<div class="bottomlang">
 
241
<p><span>Available Languages: </span><a href="../en/mod/mod_cgi.html" title="English">&nbsp;en&nbsp;</a> |
 
242
<a href="../ja/mod/mod_cgi.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
 
243
<a href="../ko/mod/mod_cgi.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>
 
244
</div><div id="footer">
 
245
<p class="apache">Copyright 2006 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
 
246
<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
 
247
</body></html>
 
 
b'\\ No newline at end of file'