为什么在Tomcat中使用Python CGI时会出现空白页面

时间:2011-08-12 13:12:45

标签: python tomcat cgi tomcat6

我刚刚开始学习Python CGI,但我甚至没有考虑到最简单的Python CGI程序。

我使用Tomcat 6.0。我已删除web.xml中的评论,并添加了<Context privileged="true">。在web.xml中,我将“cgiPathPrefix”赋予值“cgi-bin”,并在cgi-bin目录中添加了此webapps/ROOT文件夹。

cgi程序很简单;如下所示,名称为test.cgi

#!/usr/bin/python

print("Content-type: text/html")
print()
print("<title>CGI 101</title>")
print("<h1>A First CGI Example</h1>")
print("<P>Hello, CGI World!</p>")

当我转到http://localhost:8080/cgi-bin/test.cgi时,我只是得到一个空白页。

此设置有什么问题?

2 个答案:

答案 0 :(得分:1)

我在不同的背景下遇到了同样的问题。基本上,我认为OP的问题在eryksun的问题评论中得到了解决,并提出了以下建议:

可执行参数是否设置为空字符串?

使用Tomcat 7.0我已经设置了所有内容,以便服务器在启动时不会产生任何错误,并且它允许我从WEB-INF / cgi请求200“OK”响应,但它给出了一个空白的html页面,就像OP所说的那样。

解决方案是将默认参数扩展到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>
    **<init-param>
      <param-name>executable</param-name>
      <param-value>c:\myexact\path\to\perl.exe</param-value>
    </init-param>
    <init-param>
      <param-name>passShellEnvironment </param-name>
      <param-value>true</param-value>
    </init-param>**
<load-on-startup>5</load-on-startup>

</servlet>

我的添加内容以上面加粗(**)。

基本上,关键信息来自eryksun建议的来源:

http://tomcat.apache.org/tomcat-7.0-doc/cgi-howto.html

答案 1 :(得分:-2)

您的示例代码不是正确的HTML。你至少需要

 <html>,<head> and <body> 

标记。

如果添加那些不能解决问题,那么这是您的服务器配置的问题,并且可能问题更适合于serverfault.com如何调试Tomcat的错误。