要运行cgi,主要是改两个文件,一个是web.xml,一个是context.xml

1.web.xml

先把下面这段的注释去掉,然后添加默认没有的段

<servlet>

      <servlet-name>cgi</servlet-name>

      <servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class>

      <init-param>

        <param-name>debug</param-name>

        <param-value>0</param-value>

      </init-param>

      <init-param>

        <param-name>passShellEnvironment</param-name>

        <param-value>true</param-value>

      </init-param>

      <init-param>

        <param-name>cgiPathPrefix</param-name>

        <param-value>WEB-INF/cgi</param-value>

      </init-param>

      <init-param>

        <param-name>executable</param-name>

        <param-value>/usr/bin/perl</param-value>

      </init-param>

      <init-param>

        <param-name>clientInputTimeout</param-name>

        <param-value>100</param-value>

      </init-param>

      <load-on-startup>5</load-on-startup>

</servlet>


去掉下面的注释

   <servlet-mapping>

       <servlet-name>cgi</servlet-name>

      <url-pattern>/cgi-bin/*</url-pattern>

</servlet-mapping>


参数的含义大家百度一下啦


下面详细解释以下内容

      <init-param>

        <param-name>executable</param-name>

        <param-value>/usr/bin/perl</param-value>

      </init-param>


参数executable,这个参数的默认值是支持perl的,也就是说是用来解释perl脚本的。如果你用c++来写cgi脚本,那么executable这个参数的value要设为 cmd /c,还支持pythonphp等等,cgi接口程序使用什么语言编写就使用什么参数,


2.context.xml


context.xml主要是改这么一行:

<Context privileged="true">

直接在context后加上privileged="true"就可以了,用于放行可执行文件


3.添加测试程序

[root@zonghe cgi]# cd/usr/local/tomcat6/webapps/ROOT/WEB-INF

[root@zonghe WEB-INF]# mkdir cgi

[root@zonghe WEB-INF]# cd cgi/

[root@zonghe cgi]# ls

test1.cgi

[root@zonghe cgi]# cat test1.cgi

#!/usr/bin/perl

print "Content-type:text/html\n\n";

$now = localtime();

print "<h1>It is$now</h1>";


使用浏览器打开相关网页http://10.58.1.96:8080/cgi-bin/test1.cgi

tomcat开启cgi_tomcai cgi

看到图片上的内容表示设置成功