apache 服务器中的 Python Cgi 脚本

标签 python apache cgi

我想我犯了一些愚蠢的错误,但我找不到它。 试图在 apache 网络服务器上运行一个简单的 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 内部服务器错误。 我尝试更改其权限,但没有任何反应。 我能够从/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 说
[2015 年 1 月 13 日星期二 22:54:11.422641] [cgid:error] [pid 10157:tid 140434248509184] [client 127.0.0.1:44941] headers 之前的脚本输出结束:test.py
[2015 年 1 月 14 日星期三 00:20:24.434351] [cgid:error] [pid 26512:tid 140434573543296 (8)Exec format error: AH01241: exec of '/usr/lib/cgi-bin/test.py' failed
[2015 年 1 月 14 日星期三 00:20:24.434778] [cgid:error] [pid 10158:tid 140434456491776] [client 127.0.0.1:45974] headers 之前的脚本输出结束:test.py

最佳答案

当您遇到 500 个错误时,一个技巧是在命令行上运行脚本,这通常会告诉您拼写错误或其他解释器级别的问题。查看日志也可以报同样的错误,但是直接运行脚本通常更容易看出是怎么回事。

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

#/usr/bin/env python

应该是:

#!/usr/bin/env python

线索是,按原样运行脚本会显示错误,否则当您希望它通过环境的 python 解释器运行时,这些错误会通过 bash 解释器显示.

关于apache 服务器中的 Python Cgi 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27924822/

相关文章:

linux - 我想读取包含文件名的文本文件的内容,并检查它们是否在文件夹中可用

python - 使用一个函数来获取函数或常规属性的属性

apache - 设置 Apache IP 白名单

PHP mysqli 在命令行中工作,但在页面上不工作

mysql - Apache 和 Mysql 未启动

c - 如何像在 PHP 中一样使用 c 处理 CGI 中的 session

Python CGI 队列

python - FiPy 不工作

python - Python 3.5 中的 Hmac 哈希错误

python - 获取公共(public) Google 文档文件的下载链接