Python 简单cgi脚本中的内部服务器错误(500)
在配置服务器后,我尝试运行一个简单的cgi脚本 我的脚本如下所示: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
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”
打印“”
打印“”
当我转到脚本urlhttp://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。