【发布时间】:2015-08-04 21:58:15
【问题描述】:
我正在尝试设置我的 tomcat 以运行 .pl 和 .cgi 脚本,但每当我访问 cgi servlet 路径时,它只会下载脚本。
我知道对于旧版本,必须重命名两个 .JAR 文件,但我认为 Tomcat 7 没有必要...
这是我的配置
操作系统:
Linux version 2.6.32-504.30.3.el6.x86_64 (mockbuild@x86-027.build.eng.bos.redhat.com) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-9) (GCC) ) #1 SMP Thu Jul 9 15:20:47 EDT 2015
${CATALINA_HOME}/conf/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>cgiPathPrefix</param-name>
<param-value>WEB-INF/cgi</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>
${CATALINA_HOME}/conf/context.xml:
<Context privileged="true">
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
脚本目录:
${CATALINA_HOME}/ROOT/WEB-INF/cgi/test.pl
${CATALINA_HOME}/webapp1/WEB-INF/cgi/test.pl
注意:两者都设置为0775
${CATALINA_HOME}/Lib 的内容
-rw-r--r--. 1 root root 15979 May 7 13:17 annotations-api.jar
-rw-r--r--. 1 root root 54466 May 7 13:17 catalina-ant.jar
-rw-r--r--. 1 root root 130554 May 7 13:17 catalina-ha.jar
-rw-r--r--. 1 root root 1621907 May 7 13:17 catalina.jar
-rw-r--r--. 1 root root 259519 May 7 13:17 catalina-tribes.jar
-rw-r--r--. 1 root root 2310271 May 7 13:17 ecj-4.4.2.jar
-rw-r--r--. 1 root root 55535 May 7 13:17 el-api.jar
-rw-r--r--. 1 root root 124750 May 7 13:17 jasper-el.jar
-rw-r--r--. 1 root root 598396 May 7 13:17 jasper.jar
-rw-r--r--. 1 root root 87805 May 7 13:17 jsp-api.jar
-rw-r--r--. 1 root root 198014 May 7 13:17 servlet-api.jar
-rw-r--r--. 1 root root 210978 May 7 13:17 tomcat7-websocket.jar
-rw-r--r--. 1 root root 6143 May 7 13:17 tomcat-api.jar
-rw-r--r--. 1 root root 786806 May 7 13:17 tomcat-coyote.jar
-rw-r--r--. 1 root root 234043 May 7 13:17 tomcat-dbcp.jar
-rw-r--r--. 1 root root 71864 May 7 13:17 tomcat-i18n-es.jar
-rw-r--r--. 1 root root 43793 May 7 13:17 tomcat-i18n-fr.jar
-rw-r--r--. 1 root root 47036 May 7 13:17 tomcat-i18n-ja.jar
-rw-r--r--. 1 root root 125623 May 7 13:17 tomcat-jdbc.jar
-rw-r--r--. 1 root root 31948 May 7 13:17 tomcat-util.jar
-rw-r--r--. 1 root root 36271 May 7 13:17 websocket-api.jar
我也在 tomcat 前面运行 Apache。这是虚拟主机:
<VirtualHost *:80>
ServerName localhost
ServerAlias staging.website.com
ProxyRequests Off
ProxyPreserveHost On
ErrorLog /var/log/httpd/tomcat.error.log
CustomLog /var/log/httpd/tomcat.log combined
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
</VirtualHost>
我做错了什么?按照我看过的所有教程,它应该可以工作。
注意:当我直接通过 tomcat 的 port(:8080) 访问 perl 脚本时,我得到一个空白页面而不是下载。
【问题讨论】:
-
试试如果你的 cgi 是二进制可执行文件会发生什么。我昨天用lighty遇到了同样的问题。如果二进制 exe 运行而不是下载,则您可能存在权限问题(似乎不是,因为您有 775),或者您需要告诉 cgi 模块为您的脚本使用哪个处理程序。