ibm-information-center/dist/eclipse/plugins/i5OS.ic.rzaie_5.4.0.1/rzaiemod_cgi.htm

928 lines
56 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="en-us" xml:lang="en-us">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="security" content="public" />
<meta name="Robots" content="index,follow" />
<meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
<meta name="DC.Type" content="topic" />
<meta name="DC.Title" content="Module mod_cgi" />
<meta name="copyright" content="(C) Copyright IBM Corporation 2002,2006" />
<meta name="DC.Rights.Owner" content="(C) Copyright IBM Corporation 2002,2006" />
<meta name="DC.Format" content="XHTML" />
<meta name="DC.Identifier" content="rzaiemod_cgi" />
<meta name="DC.Language" content="en-us" />
<!-- All rights reserved. Licensed Materials Property of IBM -->
<!-- US Government Users Restricted Rights -->
<!-- Use, duplication or disclosure restricted by -->
<!-- GSA ADP Schedule Contract with IBM Corp. -->
<link rel="stylesheet" type="text/css" href="./ibmdita.css" />
<link rel="stylesheet" type="text/css" href="./ic.css" />
<title>Module mod_cgi</title>
</head>
<body id="rzaiemod_cgi"><a name="rzaiemod_cgi"><!-- --></a>
<!-- Java sync-link --><script language="Javascript" src="../rzahg/synch.js" type="text/javascript"></script>
<!--Java sync-link--><h1 class="topictitle1">Module mod_cgi</h1>
<div><div class="important"><span class="importanttitle">Important:</span> Information
for this topic supports the latest PTF levels for HTTP Server for i5/OS .
It is recommended that you install the latest PTFs to upgrade to the latest
level of the HTTP Server for i5/OS. Some of the topics documented here are
not available prior to this update. See <a href="http://www-03.ibm.com/servers/eserver/iseries/software/http/services/service.html" target="_blank">http://www.ibm.com/servers/eserver/iseries/software/http/services/service.htm</a> <img src="www.gif" alt="Link outside Information Center" /> for more information. </div>
<p><strong>Summary</strong></p>
<p>The module mod_cgi provides for execution of CGI scripts. This module will
process any file with mime type application/x-httpd-cgi. Any file that has
the mime type application/x-httpd-cgi or handler cgi-script 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 <a href="rzaiemod_mime.htm#addtype">AddType</a> directive,
or by being in a <a href="rzaiemod_alias.htm#scriptalias">ScriptAlias</a> directory.
</p>
<p>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 <a href="rzaiemod_core.htm#documentroot">DocumentRoot</a> configuration variable. </p>
<p><strong>CGI Environment variables</strong></p>
<p>The server will set the CGI environment variables as described in the <a href="http://hoohoo.ncsa.uiuc.edu/cgi/" target="_blank">CGI
specification</a> <img src="www.gif" alt="Link outside Information Center" /> with the following provisions. See <a href="rzaieenvvar.htm">Environment variables on HTTP Server</a> for a list of environment variables.</p>
<dl><dt class="dlterm">REMOTE_HOST </dt>
<dd>This will only be set if <a href="rzaiemod_core.htm#hostnamelookups">HostNameLookups</a> is set to <var class="varname">double</var> (it is <var class="varname">off</var> by
default), and if a reverse DNS lookup of the accessing hosts address indeed
finds a host name. </dd>
</dl>
<dl><dt class="dlterm">REMOTE_IDENT </dt>
<dd>This will only be set if <a href="rzaiemod_core.htm#identitycheck">IdentityCheck</a> is set to <var class="varname">on</var> and the accessing host
supports the ident protocol. <div class="note"><span class="notetitle">Note:</span> The contents of this variable cannot be
relied upon because it can easily be faked. If there is a proxy between the
client and the server, the variable is not useful.</div>
</dd>
</dl>
<dl><dt class="dlterm">REMOTE_USER </dt>
<dd>This will only be set if the CGI script is subject to authentication.</dd>
</dl>
<div class="hr"><h4 class="sectiontitle">CGI Debug</h4><p>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. However, the iSeries™ runs CGI programs in previously
started jobs (not prestart jobs) and it also reuses these jobs to run many
CGI program invocations. Therefore, debugging your CGI program is simple.
You simply need to find the job that runs CGI programs. It will have a jobname
the same as the server instance name. The joblog will contain either HTP2001
or HTP2002 indicating whether it is a CGI single threaded only job, or a CGI
multi-thread capable job. If you use a dedicated server instance, when you
invoke your CGI from a browser, the first job in the WRKACTJOB list for CGI,
will be the job chosen to run the CGI request. Therefore, you can use STRSRVJOB
against this job and STRDBG against your CGI program. From here, you have
full debug capabilities provided with the iSeries debugger. You can also
use standard error (stderr) for debug information. The debug information
written to STDERR is written to the ScriptLog if one is configured or to the
ErrorLog if a ScriptLog is not configured. The ScriptLog and ErrorLog are
both created with CCSID 1208 UTF-8. For CGI conversion mode EBCDIC, debug
information is assumed to be in the CCSID of the CGI job. The logging process
handles the conversion from CGI job CCSID to UTF-8. For CGI converison mode
BINARY, debug information is written as is. </p>
</div>
<div class="hr"><h4 class="sectiontitle">ScriptLog Format</h4><p>When configured,
the ScriptLog logs any CGI that does not execute properly. Each CGI script
that fails to operate causes several lines of information to be logged. The
first two lines are always of the format: </p>
<blockquote><pre>%% [time] request-line %% HTTP-status CGI-script-filename </pre>
</blockquote>
<p>If
the error is that CGI script cannot be run, the log file will contain an extra
two lines: </p>
<blockquote><pre>%%error error-message</pre>
</blockquote>
<p>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: </p>
<blockquote><pre>%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 </pre>
</blockquote>
<div class="note"><span class="notetitle">Note:</span> The <samp class="codeph">%stdout</samp> and <samp class="codeph">%stderr</samp> parts may be missing if the script did not output anything
on standard output or standard error</div>
</div>
<div class="hr"></div>
<p><strong>Directives</strong></p>
<ul><li><a href="#cgiconvmode">CGIConvMode</a></li>
<li><a href="#cgiinitialurl">CgiInitialUrl</a></li>
<li><a href="#cgijobccsid">CGIJobCCSID</a></li>
<li><a href="#cgijoblocale">CGIJobLocale</a></li>
<li><a href="#cgimultithreaded">CGIMultiThreaded</a></li>
<li><a href="#cgirecyclepersist">CGIRecyclePersist</a></li>
<li><a href="#defaultnetccsid">DefaultNetCCSID</a></li>
<li><a href="#maxcgijobs">MaxCGIJobs</a></li>
<li><a href="#maxpersistentcgi">MaxPersistentCGI</a></li>
<li><a href="#maxpersistentcgitimeout">MaxPersistentCGITimeout</a></li>
<li><a href="#maxthreadedcgijobs">MaxThreadedCGIJobs</a></li>
<li><a href="#persistentcgitimeout">PersistentCGITimeout</a></li>
<li><a href="#scriptlog">ScriptLog</a></li>
<li><a href="#scriptlogbuffer">ScriptLogBuffer</a></li>
<li><a href="#scriptloglength">ScriptLogLength</a></li>
<li><a href="#startcgi">StartCGI</a></li>
<li><a href="#startthreadedcgi">StartThreadedCGI</a></li>
<li><a href="#threadedcgiinitialurl">ThreadedCgiInitialUrl</a></li>
</ul>
</div>
<div class="hr" id="cgiconvmode"><a name="cgiconvmode"><!-- --></a><h2 class="topictitle2">CGIConvMode</h2>
<div>
<div class="tablenoborder"><table cellpadding="4" cellspacing="0" summary="" frame="void" border="0" rules="none"><tbody><tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Module">Module</a></strong>: mod_cgi</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Syntax">Syntax</a></strong>: CGIConvMode <var class="varname">mode</var> </td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Default">Default</a></strong>: CGIConvMode EBCDIC </td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Context">Context</a></strong>: server config, virtual host, directory,
.htaccess, Not in Limit</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Override">Override</a></strong>: FileInfo </td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Origin">Origin</a></strong>: iSeries</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Example">Example</a></strong>: CGIConvMode BINARY </td>
</tr>
</tbody>
</table>
</div>
<p>The CGIConvMode directive is used to specify the conversion mode that your
server will use when processing CGI programs.</p>
<blockquote><dl><dt class="dlterm"><strong>Parameter</strong>: <em>mode</em></dt>
<dd><ul><li>Valid modes include the following:
<div class="tablenoborder"><table cellpadding="4" cellspacing="0" summary="" frame="border" border="1" rules="all"><thead align="left"><tr><th valign="top" width="20.707070707070706%" id="d0e253">Mode</th>
<th valign="top" width="79.29292929292929%" id="d0e255">Description</th>
</tr>
</thead>
<tbody><tr><td valign="top" width="20.707070707070706%" headers="d0e253 ">EBCDIC</td>
<td valign="top" width="79.29292929292929%" headers="d0e255 ">The server converts everything into the EBCDIC CCSID
of the CGI job. If the directive CGIJobCCSID exists, it has precedence in
its context over the job CCSID of the server. The server assumes the header
output and encoded characters "%xx" are in the EBCDIC CCSID of the CGI job.
The server assumes that the body output is in the EBCDIC CCSID of the CGI
job unless specified otherwise using the Content-type header.</td>
</tr>
<tr><td valign="top" width="20.707070707070706%" headers="d0e253 ">EBCDIC_JCD</td>
<td valign="top" width="79.29292929292929%" headers="d0e255 ">The server will use the Japanese Codepage Detection
utility to determine which Japanese ASCII CCSID to convert from. Otherwise,
this option is the same as the EBCDIC option.</td>
</tr>
<tr><td valign="top" width="20.707070707070706%" headers="d0e253 ">BINARY</td>
<td valign="top" width="79.29292929292929%" headers="d0e255 ">The server performs no conversion on QUERY_STRING or
STDIN data. Environment variables are encoded in the CGI job's EBCDIC CCSID. <p>The
server expects the header output and encoded characters "%xx" in ASCII.
The server assumes that the body output is in ASCII unless specified otherwise
using the Content-type header. This differs from no parse header CGI in that
the server will still build the HTTP headers and perform conversion on the
body output if necessary.</p>
</td>
</tr>
</tbody>
</table>
</div>
</li>
</ul>
</dd>
</dl>
</blockquote>
</div>
</div>
<div class="hr" id="cgiinitialurl"><a name="cgiinitialurl"><!-- --></a><h2 class="topictitle2">CgiInitialUrl</h2>
<div>
<div class="tablenoborder"><table cellpadding="4" cellspacing="0" summary="" frame="void" border="0" rules="none"><tbody><tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Module">Module</a></strong>: mod_cgi</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Syntax">Syntax</a></strong>: CgiInitialUrl <var class="varname">url userid</var></td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Default">Default</a></strong>: none</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Context">Context</a></strong>: server config</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Override">Override</a></strong>: none</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Origin">Origin</a></strong>: iSeries</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Example">Example</a></strong>: CgiInitialUrl /qsys.lib/qsyscgi.lib/db2www.pgm/mymacros/macro.ndm/initial
*</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Example">Example</a></strong>: CgiInitialUrl /qsys.lib/cgi.lib/mycgi.pgm
QTMHHTP1</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Example">Example</a></strong>: CgiInitialUrl /QOpenSys/mypacedir/pacecgi
USER1</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Example">Example</a></strong>: CgiInitialUrl /qsys.lib/cgi.lib/mycgi.pgm?init=yes</td>
</tr>
</tbody>
</table>
</div>
<p>This directive is used to load and initialize CGI programs when the server
starts. At server startup, when we are processing the StartCgi directive,
we are starting jobs to run CGI programs in. This new directive will enable
the server to run a CGI request to the CGI job enabling the CGI program to
be loaded and initialized. This is beneficial for Net.Data<sup>®</sup> users and other CGI programs
built to use "named" activation groups. The initialization of the "named"
activation group is a performance issue that the first user of the CGI job
has to endure. This function will enable the performance issue to be moved
to when the server starts, so the first user does not have to pay the performance
penalty. </p>
<p>If there are no StartCgi directives, an error will be posted and the server
will not start.</p>
<blockquote><dl><dt class="dlterm"><strong>Parameter One</strong>: <em>url</em></dt>
<dd><ul><li>The <var class="varname">url</var> parameter value is actually the physical path
URL, not the logical path URL. It should not be fully qualified (do not use <kbd class="userinput">http://system:port/</kbd>).
It must start with a <kbd class="userinput">/</kbd> and contains the physical path
to the CGI program and any path info needed by the CGI program, including
query-string. If a URL is specified that is not valid, the server will not
start.</li>
</ul>
</dd>
</dl>
<dl><dt class="dlterm"><strong>Parameter Two</strong>: <em>userid</em></dt>
<dd><ul><li>The <var class="varname">userid</var> parameter value is either a valid iSeries
userid or <kbd class="userinput">*</kbd> where <kbd class="userinput">*</kbd> means all
of the userids specified on the StartCgi directive. To check for valid values,
follow the rules for iSeries user profiles. The userid is optional.</li>
</ul>
</dd>
</dl>
</blockquote>
</div>
</div>
<div class="nested1" xml:lang="en-us" id="cgijobccsid"><a name="cgijobccsid"><!-- --></a><h2 class="topictitle2">CGIJobCCSID</h2>
<div>
<div class="tablenoborder"><table cellpadding="4" cellspacing="0" summary="" frame="void" border="0" rules="none"><tbody><tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Module">Module</a></strong>: mod_cgi</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Syntax">Syntax</a></strong>: CGIJobCCSID <var class="varname">cgi-job-character-set-identification-number</var></td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Default">Default</a></strong>: CGIJobCCSID <var class="varname">Dependent upon server-character-set-identification-number</var></td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Context">Context</a></strong>: server config, virtual host, directory,
not in limit, .htaccess</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Override">Override</a></strong>: none</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Origin">Origin</a></strong>: iSeries</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Example">Example</a></strong>: CGIJobCCSID 37 </td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Example">Example</a></strong>: To run one CGI program in CCSID 37 (English):<pre>ScriptAlias /cgi-english/ /QSYS.LIB/ENGLISH.LIB/
&lt;Directory /QSYS.LIB/ENGLISH.LIB/&gt;
Allow From all
Options +ExecCGI
DefaultNetCCSID 819
CGIJobCCSID 37
CGIConvMode EBCDIC
&lt;/Directory&gt;</pre>
</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Example">Example</a></strong>: To run a different CGI program in CCSID
284 (Spanish):<pre>ScriptAlias /cgi-spanish/ /QSYS.LIB/SPANISH.LIB/
&lt;Directory /QSYS.LIB/SPANISH.LIB/&gt;
Allow From all
Options +ExecCGI
DefaultNetCCSID 819
CGIJobCCSID 284
CGIConvMode EBCDIC
&lt;/Directory&gt;</pre>
</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Example">Example</a></strong>: For GET and POST Use the URI to determine
the language of the user:<pre>Enter: http://www.mydomain.com/cgi-bin/ENG/819/...
The configuration file would have this container configuration:
&lt;Location /cgi-bin/ENG/819/&gt;
DefaultNetCCSID 819
CGIJobCCSID 37
&lt;/Location&gt;
ScriptAlias /cgi-bin/ /QSYS.LIB/CGI.LIB/
&lt;Directory /QSYS.LIB/CGI.LIB/&gt;
Allow From all
Options +ExecCGI
CGIConvMode EBCDIC
&lt;/Directory&gt;
The same configuration can handle this URI for a Japanese speaking user.
Enter: http://www.mydomain.com/cgi-bin/JAP/942/
The configuration file would also have this container configuration:
&lt;Location /cgi-bin/JAP/942/&gt;
DefaultNetCCSID 942
CGIJobCCSID 5035
CGIConvMode EBCDIC_JCD
&lt;/Location&gt;
ScriptAlias /cgi-bin/ /QSYS.LIB/CGI.LIB/
&lt;Directory /QSYS.LIB/CGI.LIB/&gt;
Allow From all
Options +ExecCGI
CGIConvMode EBCDIC
&lt;/Directory&gt; </pre>
</td>
</tr>
</tbody>
</table>
</div>
<div class="p">The CGIJobCCSID directive specifies the CCSID under which CGI jobs run,
the CGI job character set environment, and the EBCDIC CCSID that is used when
the server converts: <ul><li>Input request data for user CGI programs</li>
<li>Output response data from user CGI programs to be sent back to the requester
(client browser)</li>
</ul>
If this directive is not specified, the default behavior is to have the
CGI job run under the same CCSID as the main server jobs. See the DefaultFsCCSID
directive for detailed information on how this is determined. </div>
</div>
</div>
<div class="nested1" xml:lang="en-us" id="cgijoblocale"><a name="cgijoblocale"><!-- --></a><h2 class="topictitle2">CGIJobLocale</h2>
<div>
<div class="tablenoborder"><table cellpadding="4" cellspacing="0" summary="" frame="void" border="0" rules="none"><tbody><tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Module">Module</a></strong>: mod_cgi</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Syntax">Syntax</a></strong>: CGILocale <var class="varname">locale_path_name</var></td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Default">Default</a></strong>: none</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Context">Context</a></strong>: server config, virtual host, directory,
not in limit, .htaccess</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Override">Override</a></strong>: none</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Origin">Origin</a></strong>: iSeries</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Example">Example</a></strong>: CGIJobLocale /QSYS.LIB/LOCALELIB.LIB/EN_US.LOCALE</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Example">Example</a></strong>: To run one CGI program in CCSID 37 with
an English based locale (English):<pre>ScriptAlias /cgi-english/ /QSYS.LIB/ENGLISH.LIB/
&lt;Directory /QSYS.LIB/ENGLISH.LIB/&gt;
Allow From all
Options +ExecCGI
DefaultNetCCSID 819
CGIJobCCSID 37
CGIJobLocale /QSYS.LIB/LOCALELIB.LIB/EN_US.LOCALE
CGIConvMode EBCDIC
&lt;/Directory&gt; </pre>
</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Example">Example</a></strong>: To run a different CGI program in CCSID
273 and with a German based locale (German):<pre>ScriptAlias /cgi-german/ /QSYS.LIB/GERMAN.LIB/
&lt;Directory /QSYS.LIB/GERMAN.LIB/&gt;
Allow From all
Options +ExecCGI
DefaultNetCCSID 819
CGIJobCCSID 273
CGIJobLocale /QSYS.LIB/LOCALELIB.LIB/DE_DE.LOCALE
CGIConvMode EBCDIC
&lt;/Directory&gt; </pre>
</td>
</tr>
</tbody>
</table>
</div>
<p>Applications can be created independent of language, cultural data, or
specific characters. Locales can be accessed to provide this type of support
to any integrated language environment-based application. The CGIJobLocale
directive allows a locale to be set globally or for a specific CGI job. After
the locale is set, country specific information such as date or time format
can be accessed. Some ILE C/C++ run time functions such as <samp class="codeph">ctime()</samp> and <samp class="codeph">localtime()</samp> are
locale sensitive. The environment variable CGI_JOB_LOCALE is set from the
CGIJobLocale directive. </p>
</div>
</div>
<div class="hr" id="cgimultithreaded"><a name="cgimultithreaded"><!-- --></a><h2 class="topictitle2">CGIMultiThreaded</h2>
<div>
<div class="tablenoborder"><table cellpadding="4" cellspacing="0" summary="" frame="void" border="0" rules="none"><tbody><tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Module">Module</a></strong>: mod_cgi </td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Syntax">Syntax</a></strong>: CGIMultiThreaded <var class="varname">on | off</var> </td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Default">Default</a></strong>: CGIMultiThreaded off </td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Context">Context</a></strong>: server config, virtual host, directory,
.htaccess, Not in Limit</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Override">Override</a></strong>: FileInfo </td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Origin">Origin</a></strong>: iSeries</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Example">Example</a></strong>: CGIMultiThreaded on </td>
</tr>
</tbody>
</table>
</div>
<p>The CGIMultiThreaded directive is used to specify whether your CGI programs
should be run in a job that is multiple thread capable. HTTP Server uses a
pool of pre-started jobs for handling CGI requests. Multiple threaded programs
must run in a multiple thread-capable job. The job pool that the job runs
in is specified at job startup time. Once the job has started, it cannot be
changed to another job pool. Not all iSeries APIs are thread safe, some will
issue an error if used in a multiple thread-capable job. This happens even
if the program does not actually have multiple threads running. Because of
this, HTTP Server must default to non-multiple thread capable jobs for CGI
programs for compatibility reasons. If your CGI program uses multiple threads,
it must run in a multiple thread capable job. If your CGI does not need multiple
threads, you should run it in the single threaded CGI job for performance
reasons. </p>
</div>
</div>
<div class="hr" id="cgirecyclepersist"><a name="cgirecyclepersist"><!-- --></a><h2 class="topictitle2">CGIRecyclePersist</h2>
<div>
<div class="tablenoborder"><table cellpadding="4" cellspacing="0" summary="" frame="void" border="0" rules="none"><tbody><tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Module">Module</a></strong>: mod_cgi</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Syntax">Syntax</a></strong>: CGIRecyclePersist <var class="varname">on | off</var> </td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Default">Default</a></strong>: CGIRecyclePersist off </td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Context">Context</a></strong>: server config, virtual host, directory,
.htaccess, Not in Limit</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Override">Override</a></strong>: FileInfo </td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Origin">Origin</a></strong>: iSeries</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Example">Example</a></strong>: CGIRecyclePersist on </td>
</tr>
</tbody>
</table>
</div>
<p>The CGIRecyclePersist directive instructs the server what should be done
with the job that was being used by a persistent CGI when the persistent CGI
exits persistence normally. </p>
<blockquote><dl><dt class="dlterm"><strong>Parameter</strong>: <em>on | off</em></dt>
<dd><ul><li>The <var class="varname">on</var> value indicates that the server can reuse this
job for other CGI requests. When this is used, the persistent CGI program
is responsible for cleaning up any static data from the persistent CGI transaction.
The server will not perform any action other than to remove all environment
variables, to clean up any static data. Before using this setting, the CGI
programmer need to verify that it does indeed clean up its static data. </li>
<li>The <var class="varname">off</var> value indicates that the server will not reuse
this job for other CGI requests. This is the default behavior. </li>
</ul>
</dd>
</dl>
</blockquote>
</div>
</div>
<div class="hr" id="defaultnetccsid"><a name="defaultnetccsid"><!-- --></a><h2 class="topictitle2">DefaultNetCCSID</h2>
<div>
<div class="tablenoborder"><table cellpadding="4" cellspacing="0" summary="" frame="void" border="0" rules="none"><tbody><tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Module">Module</a></strong>: mod_cgi</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Syntax">Syntax</a></strong>: DefaultNetCCSID <var class="varname">client-character-set-identification-number</var></td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Default">Default</a></strong>: DefaultNetCCSID 819</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Context">Context</a></strong>: <span id="defaultnetccsid__defaulttype_context"><a name="defaultnetccsid__defaulttype_context"><!-- --></a>server config,
virtual host, directory, .htaccess </span></td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Override">Override</a></strong>: none </td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Origin">Origin</a></strong>: iSeries</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Example">Example</a></strong>: DefaultNetCCSID 819</td>
</tr>
</tbody>
</table>
</div>
<div class="p">The DefaultNetCCSID directive specifies the client character set environment
and defines the ASCII or UTF-8 CCSID that is used when converting: <ul><li>Input request data for user CGI programs or Apache modules.</li>
<li>When serving EBCDIC documents and no ASCII CCSID can be deduced from the
file CCSID.</li>
<li>Output response data from user CGI programs, or Apache modules, to be
sent back to the requester (client browser).</li>
</ul>
A configuration file can contain more than one DefaultNetCCSID directive,
but the last directive in the configuration file determines the CCSID. Starting
in i5/OS™ V5R4,
the use of this directive is expanded to help you configure a single server
to handle requests in more than one language. The directive is now allowed
in a virtual host container and in directory containers. This directive is
supported in the global scope.</div>
</div>
</div>
<div class="hr" id="maxcgijobs"><a name="maxcgijobs"><!-- --></a><h2 class="topictitle2">MaxCGIJobs</h2>
<div>
<div class="tablenoborder"><table cellpadding="4" cellspacing="0" summary="" frame="void" border="0" rules="none"><tbody><tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Module">Module</a></strong>: mod_cgi </td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Syntax">Syntax</a></strong>: MaxCGIJobs <var class="varname">number</var> </td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Default">Default</a></strong>: MaxCGIJobs 40 or value of the ThreadsPerChild
directive</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Context">Context</a></strong>: server config </td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Override">Override</a></strong>: none</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Origin">Origin</a></strong>: iSeries</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Example">Example</a></strong>: MaxCGIJobs 50</td>
</tr>
</tbody>
</table>
</div>
<p>The MaxCGI directive is used to set the maximum number of CGI jobs that
the server will concurrently use. The server will only run CGI programs in
jobs where the user profile for the CGI job matches the user profile that
the request is to run under. If you protect your CGI programs with many different
dummy iSeries profiles ( profiles with no password) or use %%CLIENT%% (each
user has their own iSeries profile and it is used to run the CGI program),
then you may want to use this directive to allow the server to start more
CGI jobs to handle the CGI programs. The server does reuse the CGI jobs, but
only when the profile for the CGI program matches the profile for the CGI
job. If you see the server ending and starting CGI jobs regularly, then you
may want to use this directive to allow the server to use more CGI jobs. This
would improve the capacity and performance of your system and server. </p>
<blockquote><dl><dt class="dlterm"><strong>Parameter</strong>: <em>number</em></dt>
<dd><ul><li>The <var class="varname">number</var> parameter accepts any positive number. If
an invalid value is used, or the number is smaller than the value of the ThreadsPerChild
directive, then the server will use a default of (value of ThreadsPerChild).
If ThreadsPerChild directive is not present, then the default of this directive
will be set to 40. </li>
</ul>
</dd>
</dl>
</blockquote>
</div>
</div>
<div class="hr" id="maxpersistentcgi"><a name="maxpersistentcgi"><!-- --></a><h2 class="topictitle2">MaxPersistentCGI</h2>
<div>
<div class="tablenoborder"><table cellpadding="4" cellspacing="0" summary="" frame="void" border="0" rules="none"><tbody><tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Module">Module</a></strong>: mod_cgi</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Syntax">Syntax</a></strong>: MaxPersistentCGI <var class="varname">number</var> </td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Default">Default</a></strong>: MaxPersistentCGI 40 </td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Context">Context</a></strong>: server config </td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Override">Override</a></strong>: none</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Origin">Origin</a></strong>: iSeries</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Example">Example</a></strong>: MaxPersistentCGI 50 </td>
</tr>
</tbody>
</table>
</div>
<p>The MaxPersistentCGI directive is used to set the maximum number of active
persistent CGI jobs that you want to have active at one time. </p>
<blockquote><dl><dt class="dlterm"><strong>Parameter</strong>: <em>number</em></dt>
<dd><ul><li>The <var class="varname">number</var> parameter sets the maximum number of active
persistent CGI jobs that are active at any one time.</li>
</ul>
</dd>
</dl>
</blockquote>
</div>
</div>
<div class="hr" id="maxpersistentcgitimeout"><a name="maxpersistentcgitimeout"><!-- --></a><h2 class="topictitle2">MaxPersistentCGITimeout</h2>
<div>
<div class="tablenoborder"><table cellpadding="4" cellspacing="0" summary="" frame="void" border="0" rules="none"><tbody><tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Module">Module</a></strong>: mod_cgi</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Syntax">Syntax</a></strong>: MaxPersistentCGITimeout <var class="varname">number</var> </td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Default">Default</a></strong>: MaxPersistentCGITimeout 1200 </td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Context">Context</a></strong>: server config</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Override">Override</a></strong>: none</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Origin">Origin</a></strong>: iSeries</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Example">Example</a></strong>: MaxPersistentCGITimeout 1800 </td>
</tr>
</tbody>
</table>
</div>
<p>The MaxPersistentCGITimeout directive specifies the maximum number of seconds
that a CGI program can use when overriding the PersistentCGITimeout directive.</p>
<blockquote><dl><dt class="dlterm"><strong>Parameter</strong>: <em>number</em></dt>
<dd><ul><li>The <var class="varname">number</var> parameter value must be greater than 1 second.</li>
</ul>
</dd>
</dl>
</blockquote>
</div>
</div>
<div class="hr" id="maxthreadedcgijobs"><a name="maxthreadedcgijobs"><!-- --></a><h2 class="topictitle2">MaxThreadedCGIJobs</h2>
<div>
<div class="tablenoborder"><table cellpadding="4" cellspacing="0" summary="" frame="void" border="0" rules="none"><tbody><tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Module">Module</a></strong>: mod_cgi</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Syntax">Syntax</a></strong>: MaxThreadedCGIJobs <var class="varname">number</var></td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Default">Default</a></strong>: MaxThreadedCGIJobs 40 or the value of ThreadsPerChild
directive</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Context">Context</a></strong>: server config</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Override">Override</a></strong>: none</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Origin">Origin</a></strong>: iSeries</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Example">Example</a></strong>: MaxThreadedCGIJobs 50</td>
</tr>
</tbody>
</table>
</div>
<p>The MaxThreadedCGIJobs directive is used to set the maximum number of multiple
thread capable CGI jobs that the server will concurrently use. The server
will only run multiple thread capable CGI programs in jobs where the user
profile for the multiple thread capable CGI job matches the user profile that
the request is to run under. If you protect your multiple thread capable CGI
programs with many different dummy iSeries profiles (profiles with no password)
or use %%CLIENT%% (each user has their own iSeries profile and it is used
to run the multiple thread capable CGI program), then you may want to use
this directive to allow the server to start more multiple thread capable CGI
jobs to handle the multiple thread capable CGI programs. The server does reuse
the CGI jobs, but only when the profile for the multiple thread capable CGI
program matches the profile for the multiple thread capable CGI job. If you
see the server ending and starting multiple thread capable CGI jobs regularly,
then you may want to use this directive to allow the server to use more multiple
thread capable CGI jobs. This would improve the capacity and performance of
your system and server. </p>
<blockquote><dl><dt class="dlterm"><strong>Parameter</strong>: <em>number</em></dt>
<dd><ul><li>The <var class="varname">number</var> parameter value can be any positive number.
If an invalid value is used, or the number is smaller than the value of the
ThreadsPerChild directive, then the server will use a default of (value of
ThreadsPerChild). If ThreadsPerChild directive is not present, then the default
of this directive will be set to 40. </li>
</ul>
</dd>
</dl>
</blockquote>
</div>
</div>
<div class="hr" id="persistentcgitimeout"><a name="persistentcgitimeout"><!-- --></a><h2 class="topictitle2">PersistentCGITimeout</h2>
<div>
<div class="tablenoborder"><table cellpadding="4" cellspacing="0" summary="" frame="void" border="0" rules="none"><tbody><tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Module">Module</a></strong>: mod_cgi</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Syntax">Syntax</a></strong>: PersistentCGITimeout <var class="varname">number</var> </td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Default">Default</a></strong>: PersistentCGITimeout 300 </td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Context">Context</a></strong>: server config</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Override">Override</a></strong>: none</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Origin">Origin</a></strong>: iSeries</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Example">Example</a></strong>: PersistentCGITimeout 120 </td>
</tr>
</tbody>
</table>
</div>
<p>This directive specifies the number of seconds that your server waits for
a client response before ending a persistent CGI session. The CGI program
can override the value that you specify on a request-by-request basis. </p>
<blockquote><dl><dt class="dlterm"><strong>Parameter</strong>: <em>number</em></dt>
<dd><ul><li>The <var class="varname">number</var> parameter can be any amount of time greater
than 1 second. </li>
</ul>
</dd>
</dl>
</blockquote>
</div>
</div>
<div class="hr" id="scriptlog"><a name="scriptlog"><!-- --></a><h2 class="topictitle2">ScriptLog</h2>
<div>
<div class="tablenoborder"><table cellpadding="4" cellspacing="0" summary="" frame="void" border="0" rules="none"><tbody><tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Module">Module</a></strong>: mod_cgi</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Syntax">Syntax</a></strong>: ScriptLog <var class="varname">filename</var> </td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Default">Default</a></strong>: none</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Context">Context</a></strong>: server config </td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Override">Override</a></strong>: none</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Origin">Origin</a></strong>: Modified</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Example">Example</a></strong>: ScriptLog /QIBM/userdata/httpa/(instance
name)</td>
</tr>
</tbody>
</table>
</div>
<p>The ScriptLog directive sets the Common Gateway Interface (CGI) script
error logfile. If no ScriptLog is given, no CGI error log is created. If a
ScriptLog is given, any CGI errors are logged into the filename given as the
argument. If this is a relative file or path, it is taken relative to the
server root. </p>
<p>This log will be opened as the user the child processes run as, for example
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 your main logs directory, do not change the directory permissions
to make it writable by the user the child processes run as. </p>
<div class="note"><span class="notetitle">Note:</span> The 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. </div>
<p><strong>Behavior</strong></p>
<p>If the filename does not begin with a slash ('/') then it is assumed to
be relative to the ServerRoot.</p>
<p>If the path ends with a '/' character, then the path is considered to be
the directory that will contain the log file. </p>
<p>The ScriptLog file will be created with CCSID 1208 (UTF8). Customer data
written to the script log is assumed to be in the CGI job CCSID and will automatically
be converted to CCSID 1208. The data will be written to the log file in binary.
Therefore, the customer's data will be written to the ScriptLog without conversion.
Information from the CGI request will not need to be translated, as the data
will already be in the defaultFSCCSID. </p>
</div>
</div>
<div class="hr" id="scriptlogbuffer"><a name="scriptlogbuffer"><!-- --></a><h2 class="topictitle2">ScriptLogBuffer</h2>
<div>
<div class="tablenoborder"><table cellpadding="4" cellspacing="0" summary="" frame="void" border="0" rules="none"><tbody><tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Module">Module</a></strong>: mod_cgi</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Syntax">Syntax</a></strong>: ScriptLogBuffer <var class="varname">size</var> </td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Default">Default</a></strong>: ScriptLogBuffer 1024</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Context">Context</a></strong>: server config</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Override">Override</a></strong>: none</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Origin">Origin</a></strong>: Apache</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Example">Example</a></strong>: ScriptLogBuffer 512</td>
</tr>
</tbody>
</table>
</div>
<p>The ScriptLogBuffer directive limits the size of any PUT or POST entity
body that is logged to the file. This prevents the log file from growing too
big too quickly (the case if large bodies are being received). </p>
<blockquote><dl><dt class="dlterm"><strong>Parameter</strong>: <em>size</em></dt>
<dd><ul><li>The <var class="varname">size</var> parameter is measured in bytes and consists
of any positive integer. By default, up to 1024 bytes are logged, but the
value can be changed with this directive. </li>
</ul>
</dd>
</dl>
</blockquote>
</div>
</div>
<div class="hr" id="scriptloglength"><a name="scriptloglength"><!-- --></a><h2 class="topictitle2">ScriptLogLength</h2>
<div>
<div class="tablenoborder"><table cellpadding="4" cellspacing="0" summary="" frame="void" border="0" rules="none"><tbody><tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Module">Module</a></strong>: mod_cgi</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Syntax">Syntax</a></strong>: ScriptLogLength <var class="varname">size</var> </td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Default">Default</a></strong>: ScriptLogLength 10385760</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Context">Context</a></strong>: server config</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Override">Override</a></strong>: none</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Origin">Origin</a></strong>: iSeries</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Example">Example</a></strong>: ScriptLogLength 1024000</td>
</tr>
</tbody>
</table>
</div>
<p>The ScriptLogLength directive can be used to limit the size in bytes of
the Common Gateway Interface (CGI) script log file. Since the log file logs
a significant amount of information per CGI error (all request headers, all
script output) it can grow to be quite large. To prevent problems due to unbounded
growth, this directive can be used to set a maximum file-size for the CGI
logfile. If the file exceeds this size, no more information will be written
to it. </p>
<blockquote><dl><dt class="dlterm"><strong>Parameter</strong>: <em>size</em></dt>
<dd><ul><li>The <var class="varname">size</var> parameter is measured in bytes. This is any
positive number. </li>
</ul>
</dd>
</dl>
</blockquote>
</div>
</div>
<div class="hr" id="startcgi"><a name="startcgi"><!-- --></a><h2 class="topictitle2">StartCGI</h2>
<div>
<div class="tablenoborder"><table cellpadding="4" cellspacing="0" summary="" frame="void" border="0" rules="none"><tbody><tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Module">Module</a></strong>: mod_cgi</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Syntax">Syntax</a></strong>: StartCGI <var class="varname">number userid</var> </td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Default">Default</a></strong>: none</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Context">Context</a></strong>: server config</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Override">Override</a></strong>: none</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Origin">Origin</a></strong>: iSeries</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Example">Example</a></strong>: StartCGI 5 USER1 </td>
</tr>
</tbody>
</table>
</div>
<p>The StartCGI directive specifies the number of CGI jobs that are spawned
by the server when it starts up and the iSeries user profile to use in these
jobs. This allows you to have the server prestart CGI jobs when the server
starts so the users do not incur the performance hit of starting a new job.
It also allows you to start up jobs for different user profiles. The userid
is optional and should only be used to protect your CGI programs so that they
run under the %%CLIENT%% profile or under a dummy iSeries profile (a profile
with no password). </p>
<p>The cumulative number from all occurrences of this directive cannot exceed
MaxCGIJobs, if it does, the server will not start. If the user profile parameter
is not specified, the default server profile (QTMHHTP1) or the value from
the global ServerUserID directive is used. </p>
<p>If you are using %%CLIENT%% as the profile in the protection of the CGI
programs (meaning that each user authenticates with an iSeries user profile),
then it should be noted that %%CLIENT%% is not a valid value on this directive.
Using iSeries profiles like this should only be done in an intranet or highly
secure server because you would not want to give just anyone an iSeries user
profile. Therefore, you would know how many users and also their user profile
name, thus you would need to decide how many users will be doing CGI requests
and how many concurrent CGI requests you want each user to be able to do.
Then you could specify multiple StartCGI directives, one for each user, specifying
the number of concurrent CGI requests you expect that user to do. </p>
<div class="note"><span class="notetitle">Note:</span> This will NOT limit the number of concurrent CGI requests. This will
simply allow CGI jobs to be started at server startup time so the user does
not have to incur the performance hit of starting up a new job when they run
their first CGI program. </div>
</div>
</div>
<div class="hr" id="startthreadedcgi"><a name="startthreadedcgi"><!-- --></a><h2 class="topictitle2">StartThreadedCGI</h2>
<div>
<div class="tablenoborder"><table cellpadding="4" cellspacing="0" summary="" frame="void" border="0" rules="none"><tbody><tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Module">Module</a></strong>: mod_cgi</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Syntax">Syntax</a></strong>: StartThreadedCGI <var class="varname">number userid</var> </td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Default">Default</a></strong>: none</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Context">Context</a></strong>: server config</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Override">Override</a></strong>: none</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Origin">Origin</a></strong>: iSeries</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Example">Example</a></strong>: StartThreadedCGI 3</td>
</tr>
<tr><td colspan="2" valign="top"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Example">Example</a></strong>: StartThreadedCGI 5 USER1 </td>
</tr>
</tbody>
</table>
</div>
<p>The Start ThreadedCGI directive specifies the number of multiple thread
capable CGI jobs that are spawned by the server when it starts up and the
iSeries user profile to use in these jobs. This allows you to have the server
prestart CGI jobs when the server starts so the users do not incur the performance
hit of starting a new job. It also allows you to start up jobs for different
user profiles. The userid is optional and should only be used to protect your
multiple thread capable CGI programs so that they run under the %%CLIENT%%
profile or under a dummy iSeries profile (a profile with no password).</p>
<p>The cumulative number from all occurrences of this directive cannot exceed
MaxThreadedCGIJobs, if it does, the server will not start. If the user profile
parameter is not specified, the default server profile (QTMHHTP1) or the value
from the global ServerUserID directive is used.</p>
<p>If you are using %%CLIENT%% as the profile in the protection of the multiple
thread capable CGI programs (meaning that each user authenticates with an
iSeries user profile), then it should be noted that %%CLIENT%% is not a valid
value on this directive. Using iSeries profiles like this should only be done
in an intranet or highly secure server because you would not want to give
just anyone an iSeries user profile. Therefore, you would know how many users
and also their user profile name, thus you would need to decide how many users
will be doing CGI requests and how many concurrent multiple thread capable
CGI requests you want each user to be able to do. Then you could specify multiple
StartThreadedCGI directives, one for each user, specifying the number of concurrent
multiple thread capable CGI requests you expect that user to do.</p>
<div class="note"><span class="notetitle">Note:</span> This will NOT limit the number of concurrent multiple thread capable
CGI requests. This will simply allow multiple thread capable CGI jobs to be
started at server startup time so the user does not have to incur the performance
hit of starting up a new job when they run their first multiple thread capable
CGI program. </div>
</div>
</div>
<div class="hr" id="threadedcgiinitialurl"><a name="threadedcgiinitialurl"><!-- --></a><h2 class="topictitle2">ThreadedCgiInitialUrl</h2>
<div>
<div class="tablenoborder"><table cellpadding="4" cellspacing="0" summary="" frame="void" border="0" rules="none"><tbody><tr><td valign="top" width="100%"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Module">Module</a></strong>: mod_cgi</td>
</tr>
<tr><td valign="top" width="100%"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Syntax">Syntax</a></strong>: ThreadedCgiInitialUrl <var class="varname">url userid</var></td>
</tr>
<tr><td valign="top" width="100%"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Default">Default</a></strong>: none</td>
</tr>
<tr><td valign="top" width="100%"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Context">Context</a></strong>: server</td>
</tr>
<tr><td valign="top" width="100%"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Override">Override</a></strong>: none</td>
</tr>
<tr><td valign="top" width="100%"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Origin">Origin</a></strong>: iSeries</td>
</tr>
<tr><td valign="top" width="100%"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Example">Example</a></strong>: ThreadedCgiInitialUrl /qsys.lib/cgi.lib/mycgi.pgm
QTMHHTTP</td>
</tr>
<tr><td valign="top" width="100%"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Example">Example</a></strong>: ThreadedCgiInitialUrl /QOpenSys/mypacedir/pacecgi</td>
</tr>
<tr valign="top"><td valign="top" width="100%"><strong><a href="rzaiedirective-dict.htm#rzaiedirective-dict__Example">Example</a></strong>: ThreadedCgiInitialUrl /qsys.lib/cgi.lib/mycgi.pgm?init=yes
USER1</td>
</tr>
</tbody>
</table>
</div>
<p>This directive is used to load and initialize threaded CGI programs when
the server starts. At server startup, when processing the StartThreadedCgi
directive, jobs are started to run CGI programs in. This directive enables
the server to run a CGI request to the CGI job enabling the CGI program to
be loaded and initialized. This function enables performance issues to be
moved to when the server starts, so the first user does not have diminished
performance.</p>
<p>If there are no StartThreadedCgi directives, an error is posted and the
server does not start.</p>
</div>
</div>
</body>
</html>