1

我正在尝试使用 tomcat 运行 cgi 脚本 (.cgi)。我收到以下错误,无法找出问题所在。我知道我真的应该使用 apache 和 mod 代理,但这真的不是我的专业领域,所以我采取了简单的方法!

谢谢你的帮助。

java.io.IOException: Cannot run program "perl" (in directory "C:\Java\tomcat\webapps\my_app_name\WEB-INF\cgi"): CreateProcess error=2, 系统找不到指定的文件
    java.lang.ProcessBuilder.start(ProcessBuilder.java:459)
    java.lang.Runtime.exec(Runtime.java:593)
    java.lang.Runtime.exec(Runtime.java:431)
    org.apache.catalina.servlets.CGIServlet$CGIRunner.run(CGIServlet.java:1705)
    org.apache.catalina.servlets.CGIServlet.doGet(CGIServlet.java:597)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:627)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    org.tukey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:738)
    org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:416)
4

5 回答 5

2

这是一种猜测,但您可能需要将以下内容添加到您的web.xml文件中,以便 Tomcat 可以找到 perl 可执行文件。显然, Tomcat 不会查看您PATH的可执行文件:

executable
C:\perl\bin\perl

当然,在您的系统上使用 perl 的实际路径。

于 2009-01-31T20:28:04.330 回答
1

您需要在 servlet 元素中指定“可执行”参数。根据文档,默认值为“perl”,这可能是触发错误的原因。也许将其更改为 cmd.exe 之类的东西会起作用。

于 2009-02-01T00:48:02.607 回答
0

谢谢大家,我没有找到运行 C++ cgi 脚本的正确语法,但如果你将参数留空,它将运行任何脚本类型。

<init-param>
  <param-name>executable</param-name>
  <param-value></param-value>
</init-param>
于 2009-02-01T10:03:57.867 回答
0

该错误表明perl找不到名为的可执行文件。你的系统上安装了perl吗?是在路上吗?

于 2009-01-31T20:30:28.663 回答
0

没有没有安装perl。CGI 脚本实际上是 c++。除了默认的tomcat安装之外,我没有安装任何东西。

于 2009-01-31T21:00:15.590 回答