From: Joshua Slive This module provides for execution of CGI scripts. Status: Base Any file that has the mime type
+
+ Any file that has the mime type
When the server invokes a CGI script, it will add a variable
+
+ When the server invokes a CGI script, it will add a variable
called For an introduction to using CGI scripts with Apache, see
+
+ For an introduction to using CGI scripts with Apache, see
our tutorial on Dynamic Content
With CGI. When using a multi-threaded MPM under unix, the module mod_cgid should be used in place of
+
+ When using a multi-threaded MPM under unix, the module
+ See also: Options, ScriptAlias, AddType and AddHandler.
+See also:
+ The server will set the CGI environment variables as described
in the CGI
- specification, with the following provisions:
-
- Module mod_cgi
-
-
- Source File: mod_cgi.c
- Module Identifier:
- cgi_moduleSummary
-
-
-
-
-
+
Apache HTTP Server Version 2.0
+Apache Module mod_cgi
+
+
+
+
+
+
+
+
+
+
+Description:
+
+
+
+Status: Base
+
+
+Module Identifier: cgi_module
+Summary
+application/x-httpd-cgi
or handler
cgi-script
(Apache 1.1 or later) will be treated
as a CGI script, and run by the server, with its output being
returned to the client. Files acquire this type either by
- having a name containing an extension defined by the AddType directive, or by being
- in a ScriptAlias
+ having a name containing an extension defined by the
+ AddType
directive, or by being
+ in a ScriptAlias
directory.DOCUMENT_ROOT
to the environment. This
- variable will contain the value of the DocumentRoot configuration
+ variable will contain the value of the
+ DocumentRoot
configuration
variable.mod_cgid
should be used in place of
this module. At the user level, the two modules are essentially
identical.Directives
-
-
-
-
- CGI Environment variables
- The server will set the CGI environment variables as described
+
+
+Options
+ScriptAlias
+AddHandler
+Directives
+
+
+CGI Environment variables
+
+
-
AcceptPathInfo
- directive is explicitly set to off
. The default
- behavior, if AcceptPathInfo is not given, is that mod_cgi will
- accept path info (trailing /more/path/info following the script
- filename in the URI), while the core server will return a 404
- NOT FOUND error for requests with additional path info.
- Omitting the AcceptPathInfo directive has the same effect as
- setting it on
for mod_cgi requests.HostnameLookups
- is set to on
(it is off by default), and if a
- reverse DNS lookup of the accessing host's address indeed
- finds a host name.
AcceptPathInfo
directive is explicitly set to
+ off
. The default behavior, if AcceptPathInfo is
+ not given, is that mod_cgi will accept path info (trailing
+ /more/path/info following the script filename in the URI), while
+ the core server will return a 404 NOT FOUND error for requests
+ with additional path info. Omitting the AcceptPathInfo
+ directive has the same effect as setting it on
for
+ mod_cgi requests.HostnameLookups
is set to on
(it
+ is off by default), and if a reverse DNS lookup of the accessing
+ host's address indeed finds a host name.IdentityCheck
is set to
on
and the accessing host supports the ident
protocol. Note that the contents of this variable cannot be
relied upon because it can easily be faked, and if there is a
proxy between the client and the server, it is usually
totally useless.Debugging CGI scripts has traditionally been difficult, mainly because it has not been possible to study the output (standard output and error) for scripts which are failing to run properly. These directives, included in Apache 1.2 and later, - provide more detailed logging of errors when they occur. + provide more detailed logging of errors when they occur.
+ -When configured, the CGI error log logs any CGI which does not execute properly. Each CGI script which fails to operate causes several lines of information to be logged. The first two lines - are always of the format: -
+ are always of the format: + +++ ++
++ ++ %% [time] request-line +
%% HTTP-status CGI-script-filename - - If the error is that CGI script cannot be run, the log file - will contain an extra two lines: -- %%error - error-message -- Alternatively, if the error is the result of the script +If the error is that CGI script cannot be run, the log file + will contain an extra two lines:
+ +++ ++
++ ++ + %%error
+ +error-message +Alternatively, if the error is the result of the script returning incorrect header information (often due to a bug in - the script), the following information is logged: -
- %request - All HTTP request headers received - POST or PUT entity (if any) - %response - All headers output by the CGI script - %stdout - CGI standard output - %stderr - CGI standard error -- (The %stdout and %stderr parts may be missing if the script did - not output anything on standard output or standard error). -
- -ScriptLog - directive
- Syntax: ScriptLog - filename
- Default: none
- Context: server config
- Status: mod_cgi - -The ScriptLog directive sets the CGI script error - logfile. If no ScriptLog is given, no error log is created. If - given, any CGI errors are logged into the filename given as - argument. If this is a relative file or path it is taken + the script), the following information is logged:
+ +++ ++
++ ++ + %request
+ +All HTTP request headers received +
+ +POST or PUT entity (if any) +
+ %response
+ +All headers output by the CGI script +
+ %stdout
+ +CGI standard output +
+ %stderr
+ +CGI standard error +
+ +(The %stdout and %stderr parts may be missing if the script did + not output anything on standard output or standard error).
+ + +
++ScriptLog Directive +
+
+
|
+
The ScriptLog
directive sets the CGI
+ script error logfile. If no ScriptLog is given, no error log is
+ created. If given, any CGI errors are logged into the filename
+ given as argument. If this is a relative file or path it is taken
relative to the server root.
This log will be opened as the user the child processes run - as, ie. the user specified in the main User directive. This means that + +
This log will be opened as the user the child processes run
+ as, ie. the user specified in the main User
directive. This means that
either the directory the script log is in needs to be writable
by that user or the file needs to be manually created and set
to be writable by that user. If you place the script log in
@@ -180,52 +275,105 @@
directory permissions to make it writable by the user the child
processes run as.
Note that script logging is meant to be a debugging feature + +
Note that script logging is meant to be a debugging feature when writing CGI scripts, and is not meant to be activated continuously on running servers. It is not optimized for speed or efficiency, and may have security problems if used in a manner other than that for which it was designed.
-ScriptLogLength can be used to limit the size of - the CGI script logfile. Since the logfile logs a lot of - information per CGI error (all request headers, all script - output) it can grow to be a big file. To prevent problems due - to unbounded growth, this directive can be used to set an - maximum file-size for the CGI logfile. If the file exceeds this - size, no more information will be written to it.
-The size of any PUT or POST entity body that is logged to + +
+
|
+
The size of any PUT or POST entity body that is logged to the file is limited, to prevent the log file growing too big too quickly if large bodies are being received. By default, up to 1024 bytes are logged, but this can be changed with this - directive. -
- + directive. + +
+
|
+
+ScriptLogLength
can be used to limit the
+ size of the CGI script logfile. Since the logfile logs a lot of
+ information per CGI error (all request headers, all script output)
+ it can grow to be a big file. To prevent problems due to unbounded
+ growth, this directive can be used to set an maximum file-size for
+ the CGI logfile. If the file exceeds this size, no more
+ information will be written to it.
Any file that has the mime type
+ application/x-httpd-cgi
or handler
+ cgi-script
(Apache 1.1 or later) will be treated
+ as a CGI script, and run by the server, with its output being
+ returned to the client. Files acquire this type either by
+ having a name containing an extension defined by the
+
When the server invokes a CGI script, it will add a variable
+ called DOCUMENT_ROOT
to the environment. This
+ variable will contain the value of the
+
For an introduction to using CGI scripts with Apache, see + our tutorial on Dynamic Content + With CGI.
+ +When using a multi-threaded MPM under unix, the module
+
The server will set the CGI environment variables as described + in the CGI + specification, with the following provisions:
+ +off
. The default behavior, if AcceptPathInfo is
+ not given, is that mod_cgi will accept path info (trailing
+ /more/path/info following the script filename in the URI), while
+ the core server will return a 404 NOT FOUND error for requests
+ with additional path info. Omitting the AcceptPathInfo
+ directive has the same effect as setting it on
for
+ mod_cgi requests.on
(it
+ is off by default), and if a reverse DNS lookup of the accessing
+ host's address indeed finds a host name.on
and the accessing host supports the ident
+ protocol. Note that the contents of this variable cannot be
+ relied upon because it can easily be faked, and if there is a
+ proxy between the client and the server, it is usually
+ totally useless.Debugging CGI scripts has traditionally been difficult, mainly + because it has not been possible to study the output (standard + output and error) for scripts which are failing to run + properly. These directives, included in Apache 1.2 and later, + provide more detailed logging of errors when they occur.
+ +When configured, the CGI error log logs any CGI which does not + execute properly. Each CGI script which fails to operate causes + several lines of information to be logged. The first two lines + are always of the format:
+If the error is that CGI script cannot be run, the log file + will contain an extra two lines:
+Alternatively, if the error is the result of the script + returning incorrect header information (often due to a bug in + the script), the following information is logged:
+(The %stdout and %stderr parts may be missing if the script did + not output anything on standard output or standard error).
+The
This log will be opened as the user the child processes run
+ as, ie. the user specified in the main
Note that script logging is meant to be a debugging feature + when writing CGI scripts, and is not meant to be activated + continuously on running servers. It is not optimized for speed + or efficiency, and may have security problems if used in a + manner other than that for which it was designed.
+The size of any PUT or POST entity body that is logged to + the file is limited, to prevent the log file growing too big + too quickly if large bodies are being received. By default, up + to 1024 bytes are logged, but this can be changed with this + directive.
+This module provides for execution of CGI scripts using an - external CGI daemon.
- -Status: Base (unix threaded
- MPMs only)
- Source File: mod_cgid.c
- Module Identifier:
- cgid_module
Except for the optimizations and the additional ScriptSock - directive noted below, mod_cgid behaves similarly to mod_cgi. - See the mod_cgi Summary - for additional details about Apache and CGI.
- -On certain unix operating systems, forking a process from a + +
+ + +++ + diff --git a/docs/manual/mod/mod_cgid.xml b/docs/manual/mod/mod_cgid.xml new file mode 100644 index 0000000000..bebea4f7c3 --- /dev/null +++ b/docs/manual/mod/mod_cgid.xml @@ -0,0 +1,68 @@ + + ]> + +++Apache HTTP Server Version 2.0
+Apache Module mod_cgid
++
++ ++ ++
++ +Description: + +Execution of CGI scripts using an + external CGI daemon ++ +Status: Base ++ +Module Identifier: cgid_module ++ +Compatibility: + +Unix threaded MPMs only +Summary
++ + +Except for the optimizations and the additional
+ + +ScriptSock
directive noted below, + mod_cgid behaves similarly to mod_cgi. See the +mod_cgi
Summary for additional details about + Apache and CGI. +On certain unix operating systems, forking a process from a multi-threaded server is a very expensive operation because the new process will replicate all the threads of the parent process. In order to avoid incurring this expense on each CGI @@ -43,51 +59,77 @@ main server communicates with this daemon using a unix domain socket.
-This module is used by default whenever a multi-threaded MPM + +
This module is used by default whenever a multi-threaded MPM is selected during the compilation process. At the user level, - this module is identical in configuration and operation to mod_cgi. The only exception is the + this module is identical in configuration and operation to +
-mod_cgi
. The only exception is the additional directiveScriptSock
which gives the name of the socket to use for communication with the cgi daemon.Directives
- --
-- ScriptLog
- -- ScriptLogLength
- -- ScriptLogBuffer
- -- ScriptSock
-
- -ScriptSock - directive
- -Syntax: Scriptsock - filename
- -
- Default: logs/cgisock
- Context: server config
- Status: Base
- Module: mod_cgidThis directive sets the name of the socket to use for +
Directives
++
+- +ScriptLog +
+- +ScriptLogBuffer +
+- +ScriptLogLength +
+- +ScriptSock +
+
++ScriptSock Directive +
++
++ ++ ++
++ +Description: + + +Syntax: + +ScriptSock file-path + ++ +Default: + ScriptSock logs/cgisock
+ +Context: server config ++ +Status: Base ++ +Module: mod_cgid ++ + +This directive sets the name of the socket to use for communication with the CGI daemon. The socket will be opened using the permissions of the user who starts Apache (usually root). To maintain the security of communications with CGI scripts, it is important that no other user has permission to write in the directory where the socket is located.
- - - +
+Apache HTTP Server Version 2.0
++
Except for the optimizations and the additional
On certain unix operating systems, forking a process from a + multi-threaded server is a very expensive operation because the + new process will replicate all the threads of the parent + process. In order to avoid incurring this expense on each CGI + invocation, mod_cgid creates an external daemon that is + responsible for forking child processes to run CGI scripts. The + main server communicates with this daemon using a unix domain + socket.
+ +This module is used by default whenever a multi-threaded MPM
+ is selected during the compilation process. At the user level,
+ this module is identical in configuration and operation to
+ ScriptSock
which gives the
+ name of the socket to use for communication with the cgi
+ daemon.
This directive sets the name of the socket to use for + communication with the CGI daemon. The socket will be opened + using the permissions of the user who starts Apache (usually + root). To maintain the security of communications with CGI + scripts, it is important that no other user has permission to + write in the directory where the socket is located.
+