blob: 9e5f4076dba757a437242ab650e342f5bd7cbd42 [file] [log] [blame]
Cheng Tang07b30872014-04-27 16:37:18 +08001<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - CGI How To</title><meta name="author" content="Glenn L. Nielsen"><style type="text/css" media="print">
2 .noPrint {display: none;}
3 td#mainBody {width: 100%;}
4 </style><style type="text/css">
5 code {background-color:rgb(224,255,255);padding:0 0.1em;}
6 code.attributeName, code.propertyName {background-color:transparent;}
7 </style><style type="text/css">
8 .wrapped-source code { display: block; background-color: transparent; }
9 .wrapped-source div { margin: 0 0 0 1.25em; }
10 .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
11 </style><style type="text/css">
12 p.notice {
13 border: 1px solid rgb(255, 0, 0);
14 background-color: rgb(238, 238, 238);
15 color: rgb(0, 51, 102);
16 padding: 0.5em;
17 margin: 1em 2em 1em 1em;
18 }
19 </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="
20 The Apache Tomcat Servlet/JSP Container
21 " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>CGI How To</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>
22<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Installation">Installation</a></li><li><a href="#Configuration">Configuration</a></li></ul>
23</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>
24
25<p>The CGI (Common Gateway Interface) defines a way for a web server to
26interact with external content-generating programs, which are often
27referred to as CGI programs or CGI scripts.
28</p>
29
30<p>Within Tomcat, CGI support can be added when you are using Tomcat as your
31HTTP server and require CGI support. Typically this is done
32during development when you don't want to run a web server like
33Apache httpd.
34Tomcat's CGI support is largely compatible with Apache httpd's,
35but there are some limitations (e.g., only one cgi-bin directory).
36</p>
37
38<p>CGI support is implemented using the servlet class
39<code>org.apache.catalina.servlets.CGIServlet</code>. Traditionally,
40this servlet is mapped to the URL pattern "/cgi-bin/*".</p>
41
42<p>By default CGI support is disabled in Tomcat.</p>
43</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Installation"><strong>Installation</strong></a></font></td></tr><tr><td><blockquote>
44
45<p><strong>CAUTION</strong> - CGI scripts are used to execute programs
46external to the Tomcat JVM. If you are using the Java SecurityManager this
47will bypass your security policy configuration in <code>catalina.policy.</code></p>
48
49<p>Remove the XML comments from around the CGI servlet and servlet-mapping
50configuration in <code>$CATALINA_BASE/conf/web.xml</code>.</p>
51
52<p>Only Contexts which are marked as privileged may use the CGI servlet (see the
53privileged property of the Context element).</p>
54
55</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Configuration"><strong>Configuration</strong></a></font></td></tr><tr><td><blockquote>
56
57<p>There are several servlet init parameters which can be used to
58configure the behaviour of the CGI servlet.
59<ul>
60<li><strong>cgiPathPrefix</strong> - The CGI search path will start at
61the web application root directory + File.separator + this prefix.
62The default cgiPathPrefix is <code>WEB-INF/cgi</code></li>
63<li><strong>debug</strong> - Debugging detail level for messages logged
64by this servlet. Default 0.</li>
65<li><strong>executable</strong> - The of the executable to be used to
66run the script. You may explicitly set this parameter to be an empty string
67if your script is itself executable (e.g. an exe file). Default is
68<code>perl</code>.</li>
69<li><strong>executable-arg-1</strong>, <strong>executable-arg-2</strong>,
70and so on - additional arguments for the executable. These precede the
71CGI script name. By default there are no additional arguments.</li>
72<li><strong>parameterEncoding</strong> - Name of the parameter encoding
73to be used with the CGI servlet. Default is
74<code>System.getProperty("file.encoding","UTF-8")</code>.</li>
75<li><strong>passShellEnvironment</strong> - Should the shell environment
76variables (if any) be passed to the CGI script? Default is
77<code>false</code>.</li>
78<li><strong>stderrTimeout</strong> - The time (in milliseconds) to wait for
79the reading of stderr to complete before terminating the CGI process. Default
80is 2000.</li>
81</ul>
82</p>
83
84</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions
85 on improving documentation for Apache Tomcat.<br><br>
86 If you have trouble and need help, read
87 <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page
88 and ask your question on the tomcat-users
89 <a href="http://tomcat.apache.org/lists.html">mailing list</a>.
90 Do not ask such questions here. This is not a Q&amp;A section.<br><br>
91 The Apache Comments System is explained <a href="/tomcat-7.0-doc/comments.html">here</a>.
92 Comments may be removed by our moderators if they are either
93 implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--
94 var comments_shortname = 'tomcat';
95 var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/cgi-howto.html';
96 (function(w, d) {
97 if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {
98 d.write('<div id="comments_thread"><\/div>');
99 var s = d.createElement('script');
100 s.type = 'text/javascript';
101 s.async = true;
102 s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
103 (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
104 }
105 else {
106 d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');
107 }
108 })(window, document);
109 //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>
110 Copyright &copy; 1999-2013, Apache Software Foundation
111 </em></font></div></td></tr></table></body></html>