2013-04-08 118 views
8

我正在尝试使用Apache服务器将python脚本作为cgi运行。我的脚本看起来是这样的:运行python脚本作为cgi apache服务器

#!/usr/bin/python 
    import cgi 
    if __name__ == "__main__": 

    print("Content-type: text/html") 
    print("<HTML>") 
    print("<HEAD>") 

我已经做在httpd.conf中进行必要的设置(在我看来):

<Directory "/opt/lampp/htdocs/xampp/python"> 
    Options +ExecCGI 
    AddHandler cgi-script .cgi .py 
    Order allow,deny 
    Allow from all 
    </Directory> 

我已经使用chmod

设置执行权限脚本

但是,当我尝试通过本地主机访问脚本时,出现错误500:脚本输出在标题之前结束:script.py 可能是什么问题?该脚本是在类似Unix的环境中创建的,所以我认为clrf vs lf的问题并不成立。非常感谢。

+2

有没有缩进我你的脚本在if子句中,或者你只是像这样粘贴它? – 2013-04-08 11:42:45

+0

'python -m SimpleHTTPServer'是“一种”在Python中运行HTTP服务器的想法。 – 2013-04-08 11:45:30

回答

14

我认为你缺少一个print语句后

print("Content-type: text/html") 

CGI脚本的输出应该由两个部分组成,一个空行分隔。第一部分包含许多标题,告诉客户以下哪种数据是 。

第二部分通常是HTML,其允许客户端软件,以显示与标题,在线图像很好地格式化文本等

它可能看起来像

#!/usr/bin/env python 

print "Content-Type: text/html" 
print 
print """ 
    <TITLE>CGI script ! Python</TITLE> 
    <H1>This is my first CGI script</H1> 
    Hello, world! 
""" 

详情访问python-cgi

对于python3

#!/usr/bin/env python3 

print("Content-Type: text/html") 
print() 
print (""" 
    <TITLE>CGI script ! Python</TITLE> 
    <H1>This is my first CGI script</H1> 
    Hello, world! 
""" 
) 
+0

非常感谢,我尝试过'\ n \ n'和Python 2语法(Xampp和Python 3),但没有成功。 – Zso 2017-01-29 20:49:04

相关问题