使用python进行CGI的问题

时间:2012-08-07 21:52:08

标签: python apache cgi syntax-error

出于某种原因,我必须在我的python cgi脚本中使用分号。此外,它无法识别if语句的通常语法。

例如,这有效:

#! /usr/bin/python

print "Content-type: text/html\n\n";
print "<html>Hello World!</html>";

但这不起作用:

#! /usr/bin/python

print "Content-type: text/html\n\n"
print "<html>Hello World!</html>"

这不起作用:

#! /usr/bin/python

print "Content-type: text/html\n\n";
if True:
    print "<html>Hello World!</html>";

我从最后两个示例中获得了500个内部服务器错误。我的apache错误日志表明文件中存在语法问题。我在OSX上在Apache2上运行它。非常感谢任何帮助!

编辑:很明显,这不是作为python脚本处理的。我想我可能已经找到了问题,但我不确定如何修复它。在我的httpd.conf中,我在最后附加了以下行,我认为它们是问题所在:

<Location /cgi-bin>
    SetHandler perl-script
    PerlResponseHandler ModPerl::Registry
    Options ExecCGI
    PerlSendHeader On
    Order allow,deny
    Allow from all
</Location>

我有这些行,以便我的cgi-bin中的其他一些cgi脚本可以用mod_perl运行。如果需要更改,它应该是什么样的,以便perl cgi文件仍然可以在mod_perl下运行,但python cgi文件将作为python运行?为了清楚起见,或者重要的是,我的cgi-bin中的perl文件有一个.cgi文件扩展名,但我试图运行的python cgi文件有一个.py文件扩展名。

1 个答案:

答案 0 :(得分:0)

您的apache配置明确设置为以Perl的形式运行cgi-bin目录中的内容 - 这是因为你的语法是“奇怪的” - 只有当它是一个perl程序时它才有效。

; appen结尾的独立打印语句对Python 2.x和perl都有效。

http://httpd.apache.org/docs/2.2/howto/cgi.html开始,这就是您所需要的 让你的CGI正常工作,而不强制perl来处理它们:

<Directory /cgi-bin>
Options ExecCGI
SetHandler cgi-script
</Directory>