作为CGI Apache服务器运行python脚本


问题内容

我正在尝试使用Apache服务器使python脚本作为cgi运行。我的脚本如下所示:

  #!/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设置了脚本的执行权限

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


问题答案:

我认为您在之后缺少打印声明

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