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

0 投票
1 回答
1586 浏览
提问于 2025-04-17 22:36

我在Ubuntu上运行着一个Apache2服务器,并且已经安装了PHP。我的根文件夹是 /usr/local/apache2/htdocs

我在 /usr/local/apache2/cgi-bin 文件夹里放了一个测试的Python脚本,名字叫 test.py

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

你需要把你的脚本所在的cgi-bin文件夹(和/或子文件夹)的权限设置为755。

然后,把你的脚本文件的权限也设置为755。

最后……

用你喜欢的记事本打开脚本,然后保存时选择UTF-8编码,记得不要带BOM(字节顺序标记),而且结束行的格式要设置为UNIX系统的格式。(在Notepad++中,这个选项在“编辑”菜单里)

撰写回答