在Apache服务器上作为CGI运行Python脚本

8
我正在尝试将一个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为脚本设置了执行权限,但是当我尝试通过localhost访问该脚本时,我收到了500错误:在headers之前结束脚本输出:script.py。可能问题出在哪里?该脚本是在类Unix环境中创建的,因此我认为clrf与lf的问题不存在。非常感谢。

2
你的脚本中的if语句没有缩进,还是你只是这样粘贴的? - Jarosław Jaryszew
python -m SimpleHTTPServer 是在 Python 中运行 HTTP 服务器的“简易”想法。 - user1467267
1个回答

14

我认为你在

</p>

后面漏了一个打印语句。

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!
"""
)

非常感谢,我已经尝试过\n\n和Python 2语法(Xampp和Python 3),但都没有成功。 - Zso

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接