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

Python 简单cgi脚本中的内部服务器错误(500),python,apache,cgi,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>" print“内容类型:text/ht

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

我的脚本如下所示:

print "Content-type: text/html"
print
print "<html><head><title>CGI</title></head>"
print "<body>"
print "hello cgi"
print "</body>"
print "</html>"
print“内容类型:text/html”
打印
打印“CGI”
打印“”
打印“hello cgi”
打印“”
打印“”
当我转到脚本url
http://127.0.0.1/~flybywire/cgi-bin/main.py
我得到:

内部服务器错误

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

error.log
中,我得到以下信息:


[错误](8)Exec格式错误:执行“/home/flybywire/www/cgi-bin/main.py”失败
[错误][client 127.0.0.1]脚本头过早结束:main.py


其他信息:
Apache/2.2.8(Ubuntu)DAV/2 SVN/1.4.6服务器位于127.0.0.1端口80
您可能需要一个
#/在脚本顶部的usr/bin/python
,告诉Apache使用python来执行它。至少,我这样做了,它对我有效:-)。

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

尝试将此添加到顶部:

#!/usr/bin/python
另外,使用Unix行结尾保存文件(如果这是Linux服务器)。您确实使用
chmod+x
使其可执行,不是吗

您可以使用
#/usr/bin/env-python
介绍当前运行的python版本,如果您在各种环境中运行(因此是
env
部分)。

#!/usr/bin/env python

在脚本的顶部可以很好地工作。我把它放在最上面,但是Netbeans把额外的代码(导入命令)放在了页面的最上面,这让我抓狂:(

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

因此,你的:

print "<body>"
打印“”
现在应该是:

print ("<body>")
打印(“”)

删除程序中的第二行(打印) 我在我的apache服务器(MacOSX)上试用过,效果很好。 别忘了使用chmod 755并使用sudo apachectl restart重新启动 这是针对Python2.7的

print "Content-type: text/html"
print "<html><head><title>CGI</title></head>"
print "<body>"
print "hello cgi"
print "</body>"
print "</html>"
print“内容类型:text/html”
打印“CGI”
打印“”
打印“hello cgi”
打印“”
打印“”

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

当我在没有
chmod+x的情况下尝试时,出现了另一个错误:
(13)权限被拒绝:“/home/flybywire/www/cgi-bin/main.py”的exec失败了
。这仅仅是因为chmod+x使文件权限可执行-使文件可执行是一个先决条件,真的。我认为在所有cgi脚本中添加
!/usr/bin/python
很可怕。如何通过apache SetEnv PYTHONPATH进行设置?他们使用的是Python2而不是Python3。