<?xml version="1.0"?>
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.en.xsl"?>
<!--
 Licensed to the Apache Software Foundation (ASF) under one or more
 contributor license agreements.  See the NOTICE file distributed with
 this work for additional information regarding copyright ownership.
 The ASF licenses this file to You under the Apache License, Version 2.0
 (the "License"); you may not use this file except in compliance with
 the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
-->
<modulesynopsis metafile="mod_fcgid.xml.meta">

  <name>mod_fcgid</name>
  <description>Provides for execution of FastCGI applications</description>
  <status>External</status> <!-- For now... -->
  <sourcefile>mod_fcgid.c</sourcefile>
  <identifier>fcgid_module</identifier>
  <compatibility>Apache 2.0 and higher</compatibility>
 
  <summary>
    <p>Any program assigned to the handler <code>fcgid-script</code> is processed
    using the FastCGI protocol; <module>mod_fcgid</module> starts a sufficient
    number instances of the program to handle concurrent requests, and these
    programs remain running to handle further incoming requests.  This is
    significantly faster than using the default <module>mod_cgi</module> or
    <module>mod_cgid</module> modules to launch the program upon each request.
    However, the programs invoked by <module>mod_fcgid</module> continue to
    consume resources, so the administrator must weigh the impact of invoking
    a particular program once per request against the resources required to
    leave a sufficient number of instances running continuously.</p>

    <p>The pool of fcgid-invoked programs is shared between all httpd workers.
    Configuration directives below let the administrator tune the number of
    instances of the program that will run concurrently.</p>

    <p>Specific executables are assigned this handler either by having a name 
    containing an extension defined by the 
    <directive module="mod_mime">AddHandler</directive> directive, or with an
    override using the <directive module="mod_mime">SetHandler</directive> 
    directive (e.g., for all files in a specific directory such as cgi-bin).</p>

    <p>Some changes have been made in the ASF release of mod_fcgid which
    can affect existing configurations.  All documentation refers to new
    names for the directives.  (The old names still work but are now 
    deprecated.)  Please read the <a href="#upgrade">Upgrade Notes</a> for
    details.</p>

    <p>For an introduction to using CGI scripts with Apache, see
    the generic tutorial on <a href="../howto/cgi.html">Dynamic Content
    With CGI</a>.</p>

  </summary>

  <section id="upgrade">
    <title>Upgrade Notes</title>
    <p>The following changes have been made in the ASF release of mod_fcgid
    and should be considered when upgrading from the original version by
    Ryan Pan (Pan Qingfeng).
    <ul>
      <li>All directives have been renamed in order to use a common prefix "Fcgid".
      Underscores in directive names have been eliminated in favor of
      CamelCase. The old directive names will still work but are deprecated.
      To fix your configuration you can use the sed script build/fixconf.sed.
      The following table contains old and new directive names:
      <table border="1" style="zebra">
        <tr><th>Old Name</th><th>New Name</th></tr>
        <tr>
          <td><directive>BusyScanInterval</directive></td>
          <td><directive module="mod_fcgid">FcgidBusyScanInterval</directive></td>
        </tr>
        <tr>
          <td><directive>BusyTimeout</directive></td>
          <td><directive module="mod_fcgid">FcgidBusyTimeout</directive></td>
        </tr>
        <tr>
          <td><directive>DefaultInitEnv</directive></td>
          <td><directive module="mod_fcgid">FcgidInitialEnv</directive></td>
        </tr>
        <tr>
          <td><directive>DefaultMaxClassProcessCount</directive></td>
          <td><directive module="mod_fcgid">FcgidMaxProcessesPerClass</directive></td>
        </tr>
        <tr>
          <td><directive>DefaultMinClassProcessCount</directive></td>
          <td><directive module="mod_fcgid">FcgidMinProcessesPerClass</directive></td>
        </tr>
        <tr>
          <td><directive>ErrorScanInterval</directive></td>
          <td><directive module="mod_fcgid">FcgidErrorScanInterval</directive></td> 
        </tr>
        <tr>
          <td><directive>FastCgiAccessChecker</directive></td>
          <td><directive module="mod_fcgid">FcgidAccessChecker</directive></td>
        </tr>
        <tr>
          <td><directive>FastCgiAccessCheckerAuthoritative</directive></td>
          <td><directive module="mod_fcgid">FcgidAccessCheckerAuthoritative</directive></td>
        </tr>
        <tr>
          <td><directive>FastCgiAuthenticator</directive></td>
          <td><directive module="mod_fcgid">FcgidAuthenticator</directive></td>
        </tr>
        <tr>
          <td><directive>FastCgiAuthenticatorAuthoritative</directive></td>
          <td><directive module="mod_fcgid">FcgidAuthenticatorAuthoritative</directive></td>
        </tr>
        <tr>
          <td><directive>FastCgiAuthorizer</directive></td>
          <td><directive module="mod_fcgid">FcgidAuthorizer</directive></td>
        </tr>
        <tr>
          <td><directive>FastCgiAuthorizerAuthoritative</directive></td>
          <td><directive module="mod_fcgid">FcgidAuthorizerAuthoritative</directive></td>
        </tr>
        <tr>
          <td><directive>FCGIWrapper</directive></td>
          <td><directive module="mod_fcgid">FcgidWrapper</directive></td>
        </tr>
        <tr>
          <td><directive>IdleScanInterval</directive></td>
          <td><directive module="mod_fcgid">FcgidIdleScanInterval</directive></td>
        </tr>
        <tr>
          <td><directive>IdleTimeout</directive></td>
          <td><directive module="mod_fcgid">FcgidIdleTimeout</directive></td>
        </tr>
        <tr>
          <td><directive>IPCCommTimeout</directive></td>
          <td><directive module="mod_fcgid">FcgidIOTimeout</directive></td>
        </tr>
        <tr>
          <td><directive>IPCConnectTimeout</directive></td>
          <td><directive module="mod_fcgid">FcgidConnectTimeout</directive></td>
        </tr>
        <tr>
          <td><directive>MaxProcessCount</directive></td>
          <td><directive module="mod_fcgid">FcgidMaxProcesses</directive></td>
        </tr>
        <tr>
          <td><directive>MaxRequestInMem</directive></td>
          <td><directive module="mod_fcgid">FcgidMaxRequestInMem</directive></td>
        </tr>
        <tr>
          <td><directive>MaxRequestLen</directive></td>
          <td><directive module="mod_fcgid">FcgidMaxRequestLen</directive></td>
        </tr>
        <tr>
          <td><directive>MaxRequestsPerProcess</directive></td>
          <td><directive module="mod_fcgid">FcgidMaxRequestsPerProcess</directive></td>
        </tr>
        <tr>
          <td><directive>OutputBufferSize</directive></td>
          <td><directive module="mod_fcgid">FcgidOutputBufferSize</directive></td>
        </tr>
        <tr>
          <td><directive>PassHeader</directive></td>
          <td><directive module="mod_fcgid">FcgidPassHeader</directive></td>
        </tr>
        <tr>
          <td><directive>PHP_Fix_Pathinfo_Enable</directive></td>
          <td><directive module="mod_fcgid">FcgidFixPathinfo</directive></td>
        </tr>
        <tr>
          <td><directive>ProcessLifeTime</directive></td>
          <td><directive module="mod_fcgid">FcgidProcessLifeTime</directive></td>
        </tr>
        <tr>
          <td><directive>SharememPath</directive></td>
          <td><directive module="mod_fcgid">FcgidProcessTableFile</directive></td>
        </tr>
        <tr>
          <td><directive>SocketPath</directive></td>
          <td><directive module="mod_fcgid">FcgidIPCDir</directive></td>
        </tr>
        <tr>
          <td><directive>SpawnScore</directive></td>
          <td><directive module="mod_fcgid">FcgidSpawnScore</directive></td>
        </tr>
        <tr>
          <td><directive>SpawnScoreUpLimit</directive></td>
          <td><directive module="mod_fcgid">FcgidSpawnScoreUpLimit</directive></td>
        </tr>
        <tr>
          <td><directive>TerminationScore</directive></td>
          <td><directive module="mod_fcgid">FcgidTerminationScore</directive></td>
        </tr>
        <tr>
          <td><directive>TimeScore</directive></td>
          <td><directive module="mod_fcgid">FcgidTimeScore</directive></td>
        </tr>
        <tr>
          <td><directive>ZombieScanInterval</directive></td>
          <td><directive module="mod_fcgid">FcgidZombieScanInterval</directive></td>
        </tr>
      </table>
      </li>
    </ul>
    </p>

  </section>

  <section id="examples">
    <title>Examples</title>

    <note type="hint"><title>Note</title>
    <p>The examples assume that mod_fcgid and other necessary
    modules are loaded into the server already, either built-in or 
    via the <directive module="mod_so">LoadModule</directive>
    directive.</p>

    <p>Additionally, the example configurations provide full access
    to the applications using access control directives which work 
    with Apache 2.0 and 2.2.  These directives are not appropriate
    for all environments, and they do not work for development
    levels of Apache HTTP Server (Subversion trunk).</p>
    </note>

    <p>The first example is a very simple Perl FastCGI application,
    and its configuration directives.  This is typical for FastCGI
    applications which require no special configuration.</p>

    <example><title>Perl FastCGI application - /usr/local/apache/fcgi-bin/foo.pl</title>
    #!/usr/bin/perl<br />
    use CGI::Fast;<br />
    <br />
    while (my $q = CGI::Fast->new) {<br />
    <indent>
        print("Content-Type: text/plain\n\n");<br />
        foreach $var (sort(keys(%ENV))) {<br />
        <indent>
            $val = $ENV{$var};<br />
            $val =~ s|\n|\\n|g;<br />
            $val =~ s|"|\\"|g;<br />
            print "${var}=\"${val}\"\n";<br />
        </indent>
        }<br />
    </indent>
    }<br />
    </example>

    <example><title>Configuration directives</title>
    &lt;Directory /usr/local/apache/fcgi-bin/&gt;<br />
    <indent>
      SetHandler fcgid-script<br />
      Options +ExecCGI<br />
      <br />
      # Customize the next two directives for your requirements.<br />
      Order allow,deny<br />
      Allow from all<br />
    </indent>
    &lt;/Directory&gt;<br />
    </example>

    <p>PHP applications are usually configured using the
    <directive module="mod_fcgid">FcgidWrapper</directive> directive
    and a corresponding wrapper script.  The wrapper script can be 
    an appropriate place to define any environment variables required
    by the application, such as <code>PHP_FCGI_MAX_REQUESTS</code>
    or anything else.  (Environment variables can also be set with
    <directive module="mod_fcgid">FcgidInitialEnv</directive>,
    but they then apply to all applications.)</p>

    <p>Here is an example that uses a wrapper script to invoke PHP:</p>

    <example><title>PHP application - /usr/local/phpapp/phpinfo.php</title>
    &lt;?php<br />
    <indent>
      phpinfo();<br />
    </indent>
    ?&gt;<br />
    </example>

    <example><title>Configuration directives</title>
    # FcgidMaxRequestsPerProcess should be &lt;= PHP_FCGI_MAX_REQUESTS<br />
    # The example PHP wrapper script overrides the default PHP setting.<br />
    FcgidMaxRequestsPerProcess 10000<br />
    <br />
    # Uncomment the following line if cgi.fix_pathinfo is set to 1 in<br />
    # php.ini:<br />
    # FcgidFixPathinfo 1<br />
    <br />
    Alias /phpapp/ /usr/local/phpapp/<br />
    &lt;Location /phpapp/&gt;<br />
    <indent>
      AddHandler fcgid-script .php<br />
      Options +ExecCGI<br />
      FcgidWrapper /usr/local/bin/php-wrapper .php<br />
      <br />
      # Customize the next two directives for your requirements.<br />
      Order allow,deny<br />
      Allow from all<br />
    </indent>
    &lt;/Location&gt;<br />
    </example>

    <example><title>PHP wrapper script - /usr/local/bin/php-wrapper</title>
    #!/bin/sh<br />
    # Set desired PHP_FCGI_* environment variables.<br />
    # Example:<br />
    # PHP FastCGI processes exit after 500 requests by default.<br />
    PHP_FCGI_MAX_REQUESTS=10000<br />
    export PHP_FCGI_MAX_REQUESTS<br />
    <br />
    # Replace with the path to your FastCGI-enabled PHP executable<br />
    exec /usr/local/bin/php-cgi<br />
    </example>

    <note type="hint"><title>Special PHP considerations</title>
    <p>By default, PHP FastCGI processes exit after handling 500
    requests, and they may exit after this module has already
    connected to the application and sent the next request.  When that
    occurs, an error will be logged and <code>500 Internal Server
    Error</code> will be returned to the client.  This PHP behavior
    can be disabled by setting <code>PHP_FCGI_MAX_REQUESTS</code> to
    0, but that can be a problem if the PHP application leaks
    resources.  Alternatively, <code>PHP_FCGI_MAX_REQUESTS</code> can
    be set to a much higher value than the default to reduce the
    frequency of this problem.
    <directive module="mod_fcgid">FcgidMaxRequestsPerProcess</directive>
    can be set to a value less than or equal to
    <code>PHP_FCGI_MAX_REQUESTS</code> to resolve the problem.</p>

    <p>PHP child process management (<code>PHP_FCGI_CHILDREN</code>)
    should always be disabled with mod_fcgid, which will only route
    one request at a time to application processes it has spawned;
    thus, any child processes created by PHP will not be used
    effectively.  (Additionally, the PHP child processes may not be 
    terminated properly.) By default, and with the environment
    variable setting <code>PHP_FCGI_CHILDREN=0</code>, PHP child
    process management is disabled.</p>

    <p>The popular APC opcode cache for PHP cannot share a cache
    between PHP FastCGI processes unless PHP manages the child
    processes.  Thus, the effectiveness of the cache is limited with
    mod_fcgid; concurrent PHP requests will use different opcode
    caches.</p>
    </note>

  </section>

  <section id="process-mgmt">
    <title>Process Management</title>

    <p>mod_fcgid has several types of controls which affect the creation
    of additional application processes:</p>

    <table border="1" style="zebra">
      <tr><th>Type of control</th><th>Directive</th></tr>
      <tr>
        <td>global limit on number of processes</td>
        <td><directive module="mod_fcgid">FcgidMaxProcesses</directive></td>
      </tr>
      <tr>
        <td>limit on number of processes per application</td>
        <td><directive module="mod_fcgid">FcgidMaxProcessesPerClass</directive></td>
      </tr>
      <tr>
        <td>limit on rate of spawning new application processes</td>
        <td><directive module="mod_fcgid">FcgidSpawnScoreUpLimit</directive> and
        other score-related directives</td>
      </tr>
    </table>

    <p>mod_fcgid has several types of controls which affect the termination
    of existing application processes:</p>

    <table border="1" style="zebra">
      <tr><th>Type of control</th><th>Directive</th></tr>
      <tr>
        <td>termination after an idle period</td>
        <td><directive module="mod_fcgid">FcgidIdleTimeout</directive></td>
      </tr>
      <tr>
        <td>termination after it handles a certain number of requests</td>
        <td><directive module="mod_fcgid">FcgidMaxRequestsPerProcess</directive></td>
      </tr>
      <tr>
        <td>termination after a certain lifetime</td>
        <td><directive module="mod_fcgid">FcgidProcessLifetime</directive></td>
      </tr>
    </table>

    <p>Several of the directives control processing for a <em>process 
    class</em>.  A process class is the set of processes which were started 
    with the same executable file and share certain other characteristics such
    as virtual host and identity.  Two commands which are links to or otherwise
    refer to the same executable file share the same process class.</p>

    <note type="hint"><title>Note</title>
    <p>Certain settings or other concepts that depend on the virtual host,
    such as <directive module="mod_fcgid">FcgidInitialEnv</directive>
    or process classes, distinguish between virtual hosts only if they
    have distinct server names.  (See the <directive>ServerName</directive>
    documentation for more information.) In the case of
    <directive module="mod_fcgid">FcgidInitialEnv</directive>, if two
    virtual hosts have the same server name but different environments as
    defined by 
    <directive module="mod_fcgid">FcgidInitialEnv</directive>, the 
    environment used for a particular request will be that defined for the
    virtual host of the request that caused the FastCGI process to be 
    started.</p>
    </note>

    <p>Information about each process will be displayed in the 
    <module>mod_status</module> server-status page.</p>
  </section>

  <!-- References to other documents or directives -->
  <seealso><a href="../howto/cgi.html">Dynamic Content With CGI</a></seealso>
  <seealso><module>mod_cgi</module></seealso>
  <seealso><module>mod_cgid</module></seealso>
 
  <directivesynopsis>
    <name>FcgidAccessChecker</name>
    <description>full path to FastCGI access checker</description>
    <syntax>FcgidAccessChecker <em>command</em></syntax>
    <default><em>none</em></default>
    <contextlist><context>directory</context> <context>.htaccess</context></contextlist>
    <override>FileInfo</override>
    <usage>
      <p>Access checking or, more formally, access control, is a procedure 
      which verifies that the client is allowed to access a resource, using 
      some mechanism other than authentication and authorization.</p>

      <p>Key environment variables passed to the application for access
      checking are:</p>

      <dl>
        <dt><code>FCGI_APACHE_ROLE</code></dt>
        <dd>set to <code>ACCESS_CHECKER</code>; by checking the current role,
        the same FastCGI application can handle multiple stages of request
        processing</dd>
      </dl>

      <p>The application must output a <code>Status</code> line to indicate
      the result of the check.</p>

      <note type="warning"><title>Warning</title>
      <p>Currently, only one FastCGI application of any type (AAA or handler)
      can be used for a particular request URI.  Otherwise, the wrong FastCGI
      application may be invoked for one or more phases of request processing.</p>
      </note>
    </usage>
  </directivesynopsis>

  <directivesynopsis>
    <name>FcgidAccessCheckerAuthoritative</name>
    <description>Set to 'off' to allow access control to be passed along to lower modules upon failure</description>
    <syntax>FcgidAccessCheckerAuthoritative <em>On|Off</em></syntax>
    <default>FcgidAccessCheckerAuthoritative On</default>
    <contextlist><context>directory</context> <context>.htaccess</context></contextlist>
    <override>FileInfo</override>
    <usage>
      <p>This directive controls whether or not other access checkers
      are allowed to run when this module has an access checker configured 
      and it fails a request.  If this directive is <code>On</code> (default)
      and a FastCGI access checker returns a failure status, a failure is
      returned to the client without giving other access checkers a chance to
      allow access.  If this directive is <code>Off</code>, other access
      checkers will be called.</p>
    </usage>
  </directivesynopsis>

  <directivesynopsis>
    <name>FcgidAuthenticator</name>
    <description>full path to FastCGI authenticator</description>
    <syntax>FcgidAuthenticator <em>command</em></syntax>
    <default><em>none</em></default>
    <contextlist><context>directory</context> <context>.htaccess</context></contextlist>
    <override>FileInfo</override>
    <usage>
      <p>Authentication is the procedure which verifies that the user is
      who they claim they are.  This directive specifies the full path to 
      a FastCGI application which will handle authentication for a particular
      context, such as a directory.</p>

      <p>Key environment variables passed to the application on authentication
      are:</p>

      <dl>
        <dt><code>REMOTE_USER</code></dt>
        <dd>set to the user id of the client</dd>

        <dt><code>REMOTE_PASSWD</code></dt>
        <dd>set to the plain text password provided by the client</dd>

        <dt><code>FCGI_APACHE_ROLE</code></dt>
        <dd>set to <code>AUTHENTICATOR</code>; by checking the current role,
        the same FastCGI application can handle multiple stages of request
        processing</dd>
      </dl>

      <p>The application must output a <code>Status</code> line to indicate
      the result of authentication.</p>

      <note type="warning"><title>Warning</title>
      <p>Currently, only one FastCGI application of any type (AAA or handler)
      can be used for a particular request URI.  Otherwise, the wrong FastCGI
      application may be invoked for one or more phases of request processing.</p>
      </note>
    </usage>
  </directivesynopsis>

  <directivesynopsis>
    <name>FcgidAuthenticatorAuthoritative</name>
    <description>Set to 'off' to allow authentication to be passed along to lower modules upon failure</description>
    <syntax>FcgidAuthenticatorAuthoritative <em>On|Off</em></syntax>
    <default>FcgidAuthenticatorAuthoritative On</default>
    <contextlist><context>directory</context> <context>.htaccess</context></contextlist>
    <override>FileInfo</override>
    <usage>
      <p>This directive controls whether or not other authenticators
      are allowed to run when this module has an authenticator configured 
      and it fails a request.  If this directive is <code>On</code> (default)
      and a FastCGI authenticator returns a failure status, a failure is
      returned to the client without giving other authenticators a chance to
      validate the client identity.  If this directive is <code>Off</code>, 
      other authenticators will be called.</p>
    </usage>
  </directivesynopsis>

  <directivesynopsis>
    <name>FcgidAuthorizer</name>
    <description>full path to FastCGI authorizer</description>
    <syntax>FcgidAuthorizer <em>command</em></syntax>
    <default><em>none</em></default>
    <contextlist><context>directory</context> <context>.htaccess</context></contextlist>
    <override>FileInfo</override>
    <usage>
      <p>Authorization is the procedure which verifies that the user is
      allowed to access a particular resource.  This directive specifies
      the full path to a FastCGI application which will handle authorization
      for a particular context, such as a directory.</p>

      <p>Key environment variables passed to the application on authorization
      are:</p>

      <dl>
        <dt><code>REMOTE_USER</code></dt>
        <dd>set to the user id of the client, which has already been 
        authenticated</dd>

        <dt><code>FCGI_APACHE_ROLE</code></dt>
        <dd>set to <code>AUTHORIZER</code>; by checking the current role, the 
        same FastCGI application can handle multiple stages of request
        processing</dd>
      </dl>

      <p>The application must output a <code>Status</code> line to indicate
      the result of authorization.</p>

      <note type="warning"><title>Warning</title>
      <p>Currently, only one FastCGI application of any type (AAA or handler)
      can be used for a particular request URI.  Otherwise, the wrong FastCGI
      application may be invoked for one or more phases of request processing.</p>
      </note>
    </usage>
  </directivesynopsis>

  <directivesynopsis>
    <name>FcgidAuthorizerAuthoritative</name>
    <description>Set to 'off' to allow authorization to be passed along to lower modules upon failure</description>
    <syntax>FcgidAuthorizerAuthoritative <em>On|Off</em></syntax>
    <default>FcgidAuthorizerAuthoritative On</default>
    <contextlist><context>directory</context> <context>.htaccess</context></contextlist>
    <override>FileInfo</override>
    <usage>
      <p>This directive controls whether or not other authorizers
      are allowed to run when this module has an authorizer configured 
      and it fails a request.  If this directive is <code>On</code> (default)
      and a FastCGI authorizer returns a failure status, a failure is
      returned to the client without giving other authorizer a chance to
      access the resource.  If this directive is <code>Off</code>, other
      authorizers will be called.</p>
    </usage>
  </directivesynopsis>

  <directivesynopsis>
    <name>FcgidBusyScanInterval</name>
    <description>scan interval for busy timeout process</description>
    <syntax>FcgidBusyScanInterval <em>seconds</em></syntax>
    <default>FcgidBusyScanInterval 120</default>
    <contextlist><context>server config</context></contextlist>
    <usage>
      <p>The module performs the 
      <directive module="mod_fcgid">FcgidBusyTimeout</directive> check at this 
      interval.</p>
    </usage>
  </directivesynopsis>

  <directivesynopsis>
    <name>FcgidBusyTimeout</name>
    <description>a FastCGI application will be killed after handling a request for FcgidBusyTimeout</description>
    <syntax>FcgidBusyTimeout <em>seconds</em></syntax>
    <default>FcgidBusyTimeout 300</default>
    <contextlist><context>server config</context> <context>virtual host</context></contextlist>
    <usage>
      <p>This is the maximum time limit for request handling.  If a FastCGI
      request does not complete within FcgidBusyTimeout seconds, it will be
      subject to termination.  Because the check is performed at the
      interval defined by <directive module="mod_fcgid">FcgidBusyScanInterval</directive>,
      request handling may be allowed to proceed for a longer period of time.</p>

      <p>The purpose of this directive is to terminate hung applications.
      The default timeout may need to be increased for applications that
      can take longer to process the request.</p>
    </usage>
  </directivesynopsis>

  <directivesynopsis>
    <name>FcgidCmdOptions</name>
    <description>Set processing options for a FastCGI
    command</description>
    <syntax>FcgidCmdOptions <em>command</em> <em>option</em>
    [<em>option</em>] ...</syntax>
    <contextlist><context>server config</context> <context>virtual host</context></contextlist>
    <usage>
      <p>This directive allows processing options to be specified for
      a specific command spawned by mod_fcgid.  Each option for the
      command corresponds to another directive that normally applies to
      all commands started within a particular context.  If a
      particular option is not specified on this directive, the
      default will be used.</p>

      <p>The following table provides a list of options and
      corresponding directives:</p>

      <table border="1" style="zebra">
        <tr><th>Option name and syntax</th><th>Corresponding directive</th></tr>
        <tr>
          <td><code>ConnectTimeout <em>seconds</em></code></td>
          <td><directive module="mod_fcgid">FcgidConnectTimeout</directive></td>
        </tr>
        <tr>
          <td><code>IdleTimeout <em>seconds</em></code></td>
          <td><directive module="mod_fcgid">FcgidIdleTimeout</directive></td>
        </tr>
        <tr>
          <td><code>InitialEnv <em>name[=value]</em></code></td>
          <td><directive module="mod_fcgid">FcgidInitialEnv</directive></td>
        </tr>
        <tr>
          <td><code>IOTimeout <em>seconds</em></code></td>
          <td><directive module="mod_fcgid">FcgidIOTimeout</directive></td>
        </tr>
        <tr>
          <td><code>MaxProcesses <em>value</em></code></td>
          <td><directive module="mod_fcgid">FcgidMaxProcessesPerClass</directive></td>
        </tr>
        <tr>
          <td><code>MaxProcessLifeTime <em>seconds</em></code></td>
          <td><directive module="mod_fcgid">FcgidProcessLifeTime</directive></td>
        </tr>
        <tr>
          <td><code>MaxRequestsPerProcess <em>value</em></code></td>
          <td><directive module="mod_fcgid">FcgidMaxRequestsPerProcess</directive></td>
        </tr>
        <tr>
          <td><code>MinProcesses <em>value</em></code></td>
          <td><directive module="mod_fcgid">FcgidMinProcessesPerClass</directive></td>
        </tr>
      </table>

      <p>Multiple environment variables are defined by repeating
      the <code>InitialEnv</code> option.</p>

      <example><title>Example</title>
      FcgidCmdOptions /usr/local/bin/wrapper \<br />
      <indent>
      InitialEnv MAX_REQUESTS=2000 \<br />
      MaxRequestsPerProcess 2000 \<br />
      IOTimeout 90<br />
      </indent>
      </example>

      <p>When <code>/usr/local/bin/wrapper</code> is spawned, its initial
      environment contains the <code>MAX_REQUESTS=2000</code>
      environment variable setting; additionally, mod_fcgid will
      terminate it after it has handled 2000 requests, and I/O
      operations will time out after 90 seconds.  Directives
      corresponding to other options, such as 
      <directive module="mod_fcgid">FcgidIdleTimeout</directive> or
      <directive module="mod_fcgid">FcgidProcessLifeTime</directive>,
      will be ignored for this command; defaults will be used for options
      not specified on <directive>FcgidCmdOptions</directive>.</p>
    </usage>
  </directivesynopsis>

  <directivesynopsis>
    <name>FcgidInitialEnv</name>
    <description>an environment variable name and optional value to pass to FastCGI.</description>
    <syntax>FcgidInitialEnv <em>name</em> [ <em>value</em> ]</syntax>
    <default><em>none</em></default>
    <contextlist><context>server config</context> <context>virtual host</context></contextlist>
    <usage>
      <p>Use <directive>FcgidInitialEnv</directive> to define environment 
      variables to pass to the FastCGI application.  This directive can 
      be used multiple times.</p>

      <p>This setting will apply to all applications spawned for this
      server or virtual host.  Use 
      <directive module="mod_fcgid">FcgidCmdOptions</directive> to apply
      this setting to a single application.</p>
    </usage>
  </directivesynopsis>

  <directivesynopsis>
    <name>FcgidMaxProcessesPerClass</name>
    <description>Max process count of one class of FastCGI application</description>
    <syntax>FcgidMaxProcessesPerClass <em>value</em></syntax>
    <default>FcgidMaxProcessesPerClass 100</default>
    <contextlist><context>server config</context> <context>virtual host</context></contextlist>
    <usage>
      <p>This directive sets the maximum number of processes that can be 
      started for each process class.</p>

      <p>This setting will apply to all applications spawned for this
      server or virtual host.  Use 
      <directive module="mod_fcgid">FcgidCmdOptions</directive> to apply
      this setting to a single application.</p>
    </usage>
  </directivesynopsis>

  <directivesynopsis>
    <name>FcgidMinProcessesPerClass</name>
    <description>Min process count of one class of FastCGI application</description>
    <syntax>FcgidMinProcessesPerClass <em>value</em></syntax>
    <default>FcgidMinProcessesPerClass 3</default>
    <contextlist><context>server config</context> <context>virtual host</context></contextlist>
    <usage>
      <p>This directive sets the minimum number of processes that will be
      retained in a process class after finishing requests.</p>

      <p>This setting will apply to all applications spawned for this
      server or virtual host.  Use 
      <directive module="mod_fcgid">FcgidCmdOptions</directive> to apply
      this setting to a single application.</p>
    </usage>
  </directivesynopsis>

  <directivesynopsis>
    <name>FcgidErrorScanInterval</name>
    <description>scan interval for exited process</description>
    <syntax>FcgidErrorScanInterval <em>seconds</em></syntax>
    <default>FcgidErrorScanInterval 3</default>
    <contextlist><context>server config</context></contextlist>
    <usage>
      <p>This is the interval at which the module will handle
      pending process termination.  Termination is pending for
      any processes which have exceeded 
      <directive module="mod_fcgid">FcgidIdleTimeout</directive> or
      <directive module="mod_fcgid">FcgidProcessLifeTime</directive>.</p>
    </usage>
  </directivesynopsis>

  <directivesynopsis>
    <name>FcgidIdleScanInterval</name>
    <description>scan interval for idle timeout process</description>
    <syntax>FcgidIdleScanInterval <em>seconds</em></syntax>
    <default>FcgidIdleScanInterval 120</default>
    <contextlist><context>server config</context></contextlist>
    <usage>
      <p>This is the interval at which the module will search for
      processes which have exceeded 
      <directive module="mod_fcgid">FcgidIdleTimeout</directive> or
      <directive module="mod_fcgid">FcgidProcessLifeTime</directive>.</p>
    </usage>
  </directivesynopsis>

  <directivesynopsis>
    <name>FcgidIdleTimeout</name>
    <description>An idle FastCGI application will be killed after FcgidIdleTimeout</description>
    <syntax>FcgidIdleTimeout <em>seconds</em></syntax>
    <default>FcgidIdleTimeout 300</default>
    <contextlist><context>server config</context> <context>virtual host</context></contextlist>
    <usage>
      <p>Application processes which have not handled a request for this 
      period of time will be terminated, if the number of processses for the
      class exceeds
      <directive module="mod_fcgid">FcgidMinProcessesPerClass</directive>.
      A value of <code>0</code> disables the check.</p>

      <p>This idle timeout check is performed at the frequency of the configured 
      <directive module="mod_fcgid">FcgidIdleScanInterval</directive>.</p>

      <p>This setting will apply to all applications spawned for this
      server or virtual host.  Use 
      <directive module="mod_fcgid">FcgidCmdOptions</directive> to apply
      this setting to a single application.</p>
    </usage>
  </directivesynopsis>

  <directivesynopsis>
    <name>FcgidIOTimeout</name>
    <description>Communication timeout to FastCGI server</description>
    <syntax>FcgidIOTimeout <em>seconds</em></syntax>
    <default>FcgidIOTimeout 40</default>
    <contextlist><context>server config</context> <context>virtual host</context></contextlist>
    <usage>
      <p>This is the maximum period of time the module will wait
      while trying to read from or write to a FastCGI application.</p>

      <note type="hint"><title>Note</title>
      <p>The FastCGI application must begin generating the response within
      this period of time.  Increase this directive as necessary to handle
      applications which take a relatively long period of time to respond.</p>
      </note>

      <p>This setting will apply to all applications spawned for this
      server or virtual host.  Use 
      <directive module="mod_fcgid">FcgidCmdOptions</directive> to apply
      this setting to a single application.</p>
    </usage>
  </directivesynopsis>

  <directivesynopsis>
    <name>FcgidConnectTimeout</name>
    <description>Connect timeout to FastCGI server</description>
    <syntax>FcgidConnectTimeout <em>seconds</em></syntax>
    <default>FcgidConnectTimeout 3</default>
    <contextlist><context>server config</context> <context>virtual host</context></contextlist>
    <usage>
      <p>This is the maximum period of time the module will wait
      while trying to connect to a FastCGI application on Windows.
      (This directive is not respected on Unix, where AF_UNIX defaults
      will apply.)</p>

      <p>This setting will apply to all applications spawned for this
      server or virtual host.  Use 
      <directive module="mod_fcgid">FcgidCmdOptions</directive> to apply
      this setting to a single application.</p>
    </usage>
  </directivesynopsis>

  <directivesynopsis>
    <name>FcgidMaxProcesses</name>
    <description>maximum number of FastCGI application processes</description>
    <syntax>FcgidMaxProcesses <em>value</em></syntax>
    <default>FcgidMaxProcesses 1000</default>
    <contextlist><context>server config</context></contextlist>
    <usage>
      <p>This directive sets the maximum number of FastCGI application
      processes which can be active at one time.</p>
    </usage>
  </directivesynopsis>

  <directivesynopsis>
    <name>FcgidMaxRequestInMem</name>
    <description>maximum size of a request which will be held in memory</description>
    <syntax>FcgidMaxRequestInMem <em>bytes</em></syntax>
    <default>FcgidMaxRequestInMem 65536</default>
    <contextlist><context>server config</context> <context>virtual host</context></contextlist>
    <usage>
      <p>This module reads the entire request body from the client
      before sending it to the application.  Normally the request body
      will be stored in memory.  Once the amount of request body read
      from the client exceeds <directive>FcgidMaxRequestInMem</directive>
      bytes, the remainder of the request body will be stored in a 
      temporary file.</p>
    </usage>
  </directivesynopsis>

  <directivesynopsis>
    <name>FcgidMaxRequestLen</name>
    <description>maximum HTTP request length</description>
    <syntax>FcgidMaxRequestLen <em>bytes</em></syntax>
    <default>FcgidMaxRequestLen 1073741824</default>
    <contextlist><context>server config</context> <context>virtual host</context></contextlist>
    <usage>
      <p>If the size of the request body exceeds this amount, the
      request will fail with <code>500 Server Error</code>.</p>
    </usage>
  </directivesynopsis>

  <directivesynopsis>
    <name>FcgidMaxRequestsPerProcess</name>
    <description>Max requests handled by each FastCGI application</description>
    <syntax>FcgidMaxRequestsPerProcess <em>value</em></syntax>
    <default>FcgidMaxRequestsPerProcess 0</default>
    <contextlist><context>server config</context> <context>virtual host</context></contextlist>
    <usage>
      <p>FastCGI application processes will be terminated after handling
      the specified number of requests.  A value of <code>0</code>
      disables the check.</p>
      <note type="hint"><title>Note</title>
      <p>A value of <code>-1</code> is currently accepted for ease of
      migration for existing configurations.  It is treated the same as
      <code>0</code>.</p>
      </note>
      <p>Certain applications, notably PHP as FastCGI, have their own
      facility for terminating after handling a certain number of
      requests.  This directive can be used to avoid sending
      additional requests to the application after it has handled its
      limit.</p>
      <note type="hint"><title>Note</title>
      <p>If this is set such that frequent process creation will be
      required, you will likely need to adjust 
      <directive module="mod_fcgid">FcgidSpawnScoreUpLimit</directive>
      or other score-related directives to allow more frequent process
      creation.</p>
      </note>

      <p>This setting will apply to all applications spawned for this
      server or virtual host.  Use 
      <directive module="mod_fcgid">FcgidCmdOptions</directive> to apply
      this setting to a single application.</p>
    </usage>
  </directivesynopsis>

  <directivesynopsis>
    <name>FcgidOutputBufferSize</name>
    <description>CGI output buffer size</description>
    <syntax>FcgidOutputBufferSize <em>bytes</em></syntax>
    <default>FcgidOutputBufferSize 65536</default>
    <contextlist><context>server config</context> <context>virtual host</context></contextlist>
    <usage>
      <p>This is the maximum amount of response data the module will read
      from the FastCGI application before flushing the data to the client.</p>
    </usage>
  </directivesynopsis>

  <directivesynopsis>
    <name>FcgidPassHeader</name>
    <description>Header name which will be passed to FastCGI as environment variable.</description>
    <syntax>FcgidPassHeader <em>name</em></syntax>
    <default><em>none</em></default>
    <contextlist><context>server config</context> <context>virtual host</context></contextlist>
    <usage>
      <p>This directive specifies the name of a request header which
      will be passed to the FastCGI application as an environment
      variable.  The environment variable name will match the name 
      specified on this directive, with hyphens converted to 
      underscores, and no case conversion performed.</p>

      <note type="hint"><title>Note</title>
      <p>Most request headers are already available to the application
      as environment variables, and generally are prefixed with 
      <code>HTTP_</code>.  (Notable exceptions are <code>Content-type</code>
      and <code>Content-length</code>, which do not have the
      <code>HTTP_</code> prefix.)  Thus, this directive is only required
      for request headers that are purposefully omitted, such as
      <code>Authorization</code> and <code>Proxy-Authorization</code>.
      Only pass these request headers if absolutely required.</p>
      </note>
    </usage>
  </directivesynopsis>

  <directivesynopsis>
    <name>FcgidFixPathinfo</name>
    <description>Mirror the PHP <code>cgi.fix_pathinfo</code>
    setting</description>
    <syntax>FcgidFixPathinfo 1</syntax>
    <default>FcgidFixPathinfo 0</default>
    <contextlist><context>server config</context></contextlist>
    <usage>
      <p>This directive enables special <code>SCRIPT_NAME</code> 
      processing which allows PHP to provide additional path information.
      The setting of <directive>FcgidFixPathinfo</directive>
      should mirror the <code>cgi.fix_pathinfo</code> setting in 
      <code>php.ini</code>.</p>
    </usage>
  </directivesynopsis>

  <directivesynopsis>
    <name>FcgidProcessLifeTime</name>
    <description>maximum FastCGI application process lifetime</description>
    <syntax>FcgidProcessLifeTime <em>seconds</em></syntax>
    <default>FcgidProcessLifeTime 3600</default>
    <contextlist><context>server config</context> <context>virtual host</context></contextlist>
    <usage>
      <p>Idle application processes which have existed for greater
      than this time will be terminated, if the number of processses for the
      class exceeds
      <directive module="mod_fcgid">FcgidMinProcessesPerClass</directive>.
      A value of <code>0</code> disables the check.</p>

      <p>This process lifetime check is performed at the frequency of the configured 
      <directive module="mod_fcgid">FcgidIdleScanInterval</directive>.</p>

      <p>This setting will apply to all applications spawned for this
      server or virtual host.  Use 
      <directive module="mod_fcgid">FcgidCmdOptions</directive> to apply
      this setting to a single application.</p>
    </usage>
  </directivesynopsis>

  <directivesynopsis>
    <name>FcgidProcessTableFile</name>
    <description>shared memory file path</description>
    <syntax>FcgidProcessTableFile <em>pathname</em></syntax>
    <default>FcgidProcessTableFile logs/fcgid_shm</default>
    <contextlist><context>server config</context></contextlist>
    <usage>
      <p>This module uses shared memory on Unix to maintain state which
      is shared between httpd processes.  This directive specifies the
      name of the shared memory file.</p>
    </usage>
  </directivesynopsis>

  <directivesynopsis>
    <name>FcgidIPCDir</name>
    <description>directory for AF_UNIX sockets (Unix) or pipes (Windows)</description>
    <syntax>FcgidIPCDir <em>pathname</em></syntax>
    <default>FcgidIPCDir logs/fcgidsock</default>
    <contextlist><context>server config</context></contextlist>
    <usage>
      <p>This module uses AF_UNIX sockets or named pipes, depending on the
      platform, to communicate with FastCGI applications.  This directive
      specifies the directory where those sockets or named pipes will be
      created.</p>
    </usage>
  </directivesynopsis>

  <directivesynopsis>
    <name>FcgidSpawnScore</name>
    <description>Each spawn adds this value to the process activity score.</description>
    <syntax>FcgidSpawnScore <em>value</em></syntax>
    <default>FcgidSpawnScore 1</default>
    <contextlist><context>server config</context></contextlist>
    <usage>
      <p>Lower values of this directive increase the allowed spawn rate.</p>

      <p>Refer to the <directive module="mod_fcgid">FcgidSpawnScoreUpLimit</directive>
      directive for more information.</p>
    </usage>
  </directivesynopsis>

  <directivesynopsis>
    <name>FcgidSpawnScoreUpLimit</name>
    <description>Maximum value of the process activity score which allows
    a spawn to occur</description>
    <syntax>FcgidSpawnScoreUpLimit <em>value</em></syntax>
    <default>FcgidSpawnScoreUpLimit 10</default>
    <contextlist><context>server config</context></contextlist>
    <usage>
      <p>A process activity score is maintained for each FastCGI application;
      the score is used to control the rate of spawning in order to avoid 
      placing too much load on the system, particularly for applications that
      are repeatedly exiting abnormally.</p>

      <p>The value of <directive module="mod_fcgid">FcgidSpawnScore</directive>
      is added to the score for every spawned application process.  The value of 
      <directive module="mod_fcgid">FcgidTerminationScore</directive> is added
      to the score for every terminated application process.  The value of
      <directive module="mod_fcgid">FcgidTimeScore</directive> is subtracted
      from the score every second.</p>

      <p>When the current score is higher than the value of
      <directive>FcgidSpawnScoreUpLimit</directive>, no additional application
      processes will be spawned; subsequent requests must wait until an existing 
      process is free or until the score decreases below the limit.</p>

      <p>If the limit is reached under normal load, it may not be sufficient to
      simply increase the limit, as that would only delay the amount of time 
      before the limit is reached again.  Decrease the value of 
      <directive module="mod_fcgid">FcgidSpawnScore</directive> and/or 
      <directive module="mod_fcgid">FcgidTerminationScore</directive>, or
      increase the value of <directive module="mod_fcgid">FcgidTimeScore</directive>,
      to allow a higher rate of spawning.</p>
    </usage>
  </directivesynopsis>

  <directivesynopsis>
    <name>FcgidTerminationScore</name>
    <description>Each terminated process adds this value to the process activity
    score.</description>
    <syntax>FcgidTerminationScore <em>value</em></syntax>
    <default>FcgidTerminationScore 2</default>
    <contextlist><context>server config</context></contextlist>
    <usage>
      <p>Lower values of this directive increase the allowed spawn rate.  Negative
      values can be useful in some circumstances, such as allowing process 
      replacement without increasing the score.</p>

      <p>Refer to the <directive module="mod_fcgid">FcgidSpawnScoreUpLimit</directive>
      directive for more information.</p>
    </usage>
  </directivesynopsis>

  <directivesynopsis>
    <name>FcgidTimeScore</name>
    <description>Amount subtracted from process activity score each 
    second</description>
    <syntax>FcgidTimeScore <em>value</em></syntax>
    <default>FcgidTimeScore 1</default>
    <contextlist><context>server config</context></contextlist>
    <usage>
      <p>Higher values of this directive increase the allowed spawn rate.</p>

      <p>Refer to the <directive module="mod_fcgid">FcgidSpawnScoreUpLimit</directive>
      directive for more information.</p>
    </usage>
  </directivesynopsis>

  <directivesynopsis>
    <name>FcgidWrapper</name>
    <description>The CGI wrapper setting</description>
    <syntax>FcgidWrapper <em>command</em> [ <em>suffix</em> ] [ virtual ]</syntax>
    <default><em>none</em></default>
    <contextlist>
      <context>server config</context> <context>virtual host</context>
      <context>directory</context> <context>.htaccess</context>
    </contextlist>
    <override>FileInfo</override>
    <usage>
      <p>The given command is used to spawn FCGI server processes. If this directive
      is not used, the file pointed to by the request URL will be used instead.
      Options for the command can be included using quotation marks surrounding
      the command and options.</p>
      <p>The optional <code>suffix</code> argument restricts the use of this FCGI
      server to all URLs with the given exact path suffix. A suffix needs to start
      with '<code>.</code>'.</p>
      <p>The <code>virtual</code> flag signals that there will be no check
      whether the request URL actually points to an existing file. The only
      file which needs to exist is the wrapper itself.</p>
      <p>The directive can be used multiple times. A wrapper defined without a suffix
      is used as a default in case no suffix matches.</p>
    </usage>
  </directivesynopsis>

  <directivesynopsis>
    <name>FcgidZombieScanInterval</name>
    <description>scan interval for zombie process</description>
    <syntax>FcgidZombieScanInterval <em>seconds</em></syntax>
    <default>FcgidZombieScanInterval 3</default>
    <contextlist><context>server config</context></contextlist>
    <usage>
      <p>The module checks for exited FastCGI applications at this interval.
      During this period of time, the application may exist in the process
      table as a zombie (on Unix).</p>
    </usage>
  </directivesynopsis>

</modulesynopsis>
