我想我犯了一些愚蠢的错误,但我无法找到它。 试图在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
答案 0 :(得分:4)
当您遇到500个错误时,一个提示就是在命令行上运行脚本,这通常会告诉您拼写错误或其他解释程序级别的问题。查看日志也可以报告相同的错误,但通常更容易通过直接运行脚本来查看正在进行的操作。
具体来说,至少有一个问题是这一行中的拼写错误:
#/usr/bin/env python
应该是:
#!/usr/bin/env python
线索是,当您希望通过环境的bash
解释程序运行时,按原样运行脚本会显示通过python
解释程序显示的错误。 / p>