在cgi-bin中执行Python文件时出错(尝试在Apache中启用CGI脚本)

时间:2014-03-17 01:57:19

标签: python apache ubuntu cgi-bin

我在Ubuntu上运行Apache2服务器,安装了PHP。 我的根文件夹是/usr/local/apache2/htdocs

我在/usr/local/apache2/cgi-bin中放了一个名为test.py的测试python脚本。

test.py

#!/usr/bin/python
import cgi
import cgitb; cgitb.enable()
print "Content-Type: text/plain\r\n\r\n"
print 'hi'

我通过http://localhost/cgi-bin/test.py在浏览器中访问此内容。目前,它只显示我刚输出的Python代码,而不是执行它。我已经广泛查看了解决此问题的在线文档和其他stackoverflow问题。

根据该研究,我将httpd.conf文件更改为包含一些Directory

httpd.conf (添加到其中的内容)

ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/"

<Directory "/usr/local/apache2/cgi-bin">
    Options ExecCGI
    SetHandler cgi-script
</Directory>

<Directory "/usr/local/apache2">
    AddHandler cgi-script .py
    AllowOverride None
    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all
</Directory>

我已经重新启动/硬启动/停止了Apache并且能够通过命令行成功运行Python文件,但是通过浏览器实际执行python文件仍然没有运气。我甚至检查了Apache错误日志,但没有看到问题的迹象。有人可以提供一些建议吗?

谢谢

1 个答案:

答案 0 :(得分:0)

您需要chmod 755 cgi-bin文件夹(和/或子文件夹),其中包含脚本。

然后chmod 755你的脚本文件。

最后..

在您的偏好的记事本中打开脚本,并使用没有BOM的UTF-8编码保存,并且必须为UNIX系统设置EOL(行尾)转换。 (在Notepad ++中,后者在编辑菜单中)