要运行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,还支持python,php等等,cgi接口程序使用什么语言编写就使用什么参数,
2.context.xml
context.xml主要是改这么一行: <Context privileged="true"> 直接在context后加上privileged="true"就可以了,用于放行可执行文件
3.添加测试程序 [iyunv@zonghe cgi]# cd/usr/local/tomcat6/webapps/ROOT/WEB-INF [iyunv@zonghe WEB-INF]# mkdir cgi [iyunv@zonghe WEB-INF]# cd cgi/ [iyunv@zonghe cgi]# ls test1.cgi [iyunv@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
看到图片上的内容表示设置成功
|