简单cgi脚本中的内部服务器错误(500)

时间:2009-09-23 08:33:53

标签: python apache cgi

我正在尝试在配置我的服务器后运行一个简单的cgi脚本。

我的脚本如下所示:

print "Content-type: text/html"
print
print "<html><head><title>CGI</title></head>"
print "<body>"
print "hello cgi"
print "</body>"
print "</html>"

当我转到我的脚本网址http://127.0.0.1/~flybywire/cgi-bin/main.py时,我得到了:

内部服务器错误

服务器遇到内部错误或配置错误,无法完成您的请求。

error.log我得到以下内容:

[error] (8)Exec format error: exec of '/home/flybywire/www/cgi-bin/main.py' failed [error] [client 127.0.0.1] Premature end of script headers: main.py

其他信息: Apache/2.2.8 (Ubuntu) DAV/2 SVN/1.4.6 Server at 127.0.0.1 Port 80

8 个答案:

答案 0 :(得分:22)

您可能需要在脚本顶部使用#!/usr/bin/python来告诉Apache使用Python来执行它。至少,我这样做了,它对我有用:-)。

答案 1 :(得分:10)

此外,使用Unix行结尾保存文件(如果这是Linux服务器)。您确实使用chmod +x使其可执行,不是吗?

如果您在各种环境中运行(#!/usr/bin/env python部分),您可以使用env来涵盖当前正在运行的Python版本。

答案 2 :(得分:1)

#!/usr/bin/env python
脚本顶部的

工作正常。我把它放在首位,但是Netbeans在页面顶部放置了额外的代码(导入命令),这让我疯狂:(

答案 3 :(得分:0)

看起来Apache在执行它时遇到了麻烦。通常,对于unix脚本,您还需要在脚本的顶部指定解释器。

尝试将此添加到顶部:

#!/usr/bin/python

答案 4 :(得分:0)

也许你的问题是新的python版本需要括号()。

所以你的:

print "<body>"

现在应该是:

print ("<body>")

答案 5 :(得分:0)

删除程序中的第二行(打印) 我在我的apache服务器上尝试了它(mac os x)它运行正常。 不要忘记chmod 755并重启sudo apachectl restart 这是for python 2.7

print "Content-type: text/html"
print "<html><head><title>CGI</title></head>"
print "<body>"
print "hello cgi"
print "</body>"
print "</html>"

答案 6 :(得分:0)

Apache 不知道在您的 PC 上哪里可以找到 python 来执行该文件。 尝试将 #!C:/python 添加为 .py 文件的第一行(或 PC 上安装 Python 的任何位置)。

答案 7 :(得分:0)

如果是python 3,你可以在程序顶部添加#!/usr/bin/python3而不是#!/usr/bin/python(因为我是法国人,我觉得我的英语不完全正确)