我刚刚开始学习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
时,我只是得到一个空白页。
此设置有什么问题?
答案 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建议的来源:
答案 1 :(得分:-2)
您的示例代码不是正确的HTML。你至少需要
<html>,<head> and <body>
标记。
如果添加那些不能解决问题,那么这是您的服务器配置的问题,并且可能问题更适合于serverfault.com如何调试Tomcat的错误。