出于某种原因,我必须在我的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文件扩展名。
答案 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>