Apache服务器中的Python Cgi脚本

时间:2015-01-13 14:49:11

标签: python apache cgi

我想我犯了一些愚蠢的错误,但我无法找到它。 试图在apache webserver上运行一个简单的python cgi脚本。我的代码是

#/usr/bin/env python
import cgitb
import cgi
cgitb.enable()
print 'Content-Type: text/html'
print 
print '<html>'
print '<head><title>My first Python CGI app</title></head>'
print '  <body>'
print '    <p>something to try<p>'
print '  </body>'
print '</html>'

此代码位于/ usr / lib / cgi-bin中 我尝试通过localhost / cgi-bin / test.py运行它 但它显示 500 INTERNAL SERVER ERROR 。 我尝试更改其权限,没有任何反应。 我可以从/var/www/html/file_name.html运行html文件 所以我尝试在www /和www / html /(两者中)中创建cgi-bin文件夹,没有它,没有解决。

我在apache2.conf中添加了这个

    <Directory /usr/lib/cgi-bin>
    Options +ExecCGI
    AddHandler cgi-script .cgi .py
    Order allow,deny
    Allow from all
    </Directory>

和var / log / apache2 / error.log说
        [Tue Jan 13 22:54:11.422641 2015] [cgid:error] [pid 10157:tid 140434248509184]         [client 127.0.0.1:44941]标题前的脚本输出结束:test.py
        [Wed Jan 14 00:20:24.434351 2015] [cgid:error] [pid 26512:tid 140434573543296         (8)执行格式错误:AH01241:'/usr/lib/cgi-bin/test.py'的执行失败
        [Wed Jan 14 00:20:24.434778 2015] [cgid:error] [pid 10158:tid 140434456491776]         [client 127.0.0.1:45974]标题前的脚本输出结束:test.py

1 个答案:

答案 0 :(得分:4)

当您遇到500个错误时,一个提示就是在命令行上运行脚本,这通常会告诉您拼写错误或其他解释程序级别的问题。查看日志也可以报告相同的错误,但通常更容易通过直接运行脚本来查看正在进行的操作。

具体来说,至少有一个问题是这一行中的拼写错误:

#/usr/bin/env python

应该是:

#!/usr/bin/env python

线索是,当您希望通过环境的bash解释程序运行时,按原样运行脚本会显示通过python解释程序显示的错误。 / p>