Apache2 CGI 配置
Posted
技术标签:
【中文标题】Apache2 CGI 配置【英文标题】:Apache2 CGI configuration 【发布时间】:2013-10-03 00:22:13 【问题描述】:我无法访问我在 python 中编写的一个非常简单的 cgi 脚本,并且在找到解决方案时遇到了太多麻烦。我觉得这将是一个很容易解决的问题,但我自己无法弄清楚。
url: localhost/cgi-bin/test.cgi(我也试过将它命名为 test.py) 我得到的错误是一个简单的 404,我认为下面的 ScriptAlias 会解决这个问题。此外,如果我尝试访问 localhost/cgi-bin/,我会得到 403:拒绝访问。我尝试将权限(我知道这很愚蠢)重置为 777,但没有更好的结果。
/etc/apache2/httpd.conf(对默认的/etc/apache2/apache2.conf没有特殊的编辑):
ScriptAlias /cgi-bin/ /usr/local/apache2/cgi-bin/
<Directory /usr/local/apache2/cgi-bin/>
Options +ExecCGI
AddHandler cgi-script .cgi .py
</Directory>
/usr/local/apache2/cgi-bin:
.
└── test.cgi
test.cgi:
#!/usr/bin/python
import cgi
#cgi.test()
print 'Content-type: text/html\n\n'
print 'test'
此外,在更改 httpd.conf 文件后,我还重新启动了 apache2。除了我已经看过的内容之外,我想不出任何其他内容: ScriptAlias configuration not working in apache2 但我不明白作者所引用的全局。我非常强烈地认为这是我的一个配置中的错误,但看起来代码非常简单。
如果有人能帮助我解决这个愚蠢的问题,我将不胜感激。
编辑:
错误日志:
--clip--
[Thu Sep 26 23:34:59 2013] [error] [client 127.0.0.1] script not found or unable to stat: /usr/lib/cgi-bin/test.cgi
[Thu Sep 26 23:42:08 2013] [error] [client 127.0.0.1] script not found or unable to stat: /usr/lib/cgi-bin/test.cgi
系统信息:
lsb_release -a
Distributor ID: Ubuntu
Description: Ubuntu 12.04.2 LTS
Release: 12.04
Codename: precise
uname -a
Linux #### 3.2.0-39-generic #62-Ubuntu SMP Thu Feb 28 00:28:53 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
我想我找到了罪魁祸首:
/etc/apache2/sites-enabled/000-default:
1 <VirtualHost *:80>
2 ServerAdmin webmaster@localhost
3
4 DocumentRoot /var/www
5 <Directory />
6 Options FollowSymLinks
7 AllowOverride None
8 </Directory>
9 <Directory /var/www/>
10 Options Indexes FollowSymLinks MultiViews
11 AllowOverride None
12 Order allow,deny
13 allow from all
14 </Directory>
15
16 ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
17 <Directory "/usr/lib/cgi-bin">
18 AllowOverride None
19 Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
20 Order allow,deny
21 Allow from all
22 </Directory>
特别是第 16 行。我从没想过要查看这个目录
【问题讨论】:
您的 apache 错误日志中有任何线索吗? cgi-bin目录应该不允许目录列表,如果直接访问cgi(localhost/cgi-bin/test.cgi)怎么办? 我已经包含了正在显示的错误示例。看起来它正在搜索正确的目录。 【参考方案1】:根据您的错误日志,您没有编辑正确的配置或其他内容。 注意它说/usr/lib/cgi-bin? 只是为了好玩,如果您将脚本复制到/usr/lib/cgi-bin,然后尝试一下,它是否有效? 这个 apache 安装在什么操作系统上?
还有一件事,该配置文件中的某个地方是否还有另一个 ScriptAlias? 也许这会覆盖您的 /cgi-bin/ 映射?
【讨论】:
你是对的,我误读了错误日志。我将文件复制到提到的目录中,它像冠军一样执行。我想更大的问题是为什么那个目录? 有东西在配置中设置它。这就是为什么我问什么操作系统。您正在编辑的配置文件的位置是什么? /etc/apache2/httpd.conf 是我编辑的。我使用的是默认的/etc/apache2/apache2.conf,它似乎没有提到那个目录,也没有提到/etc/apache2/conf.d/中的任何文件 每个系统似乎都以不同的方式拆分 apache 配置。你在linux/unix上吗? find / -name httpd.conf -name apache2.conf -print 在 /etc/apache2/sites-enabled 中有一个文件,其中包含另一个 scriptAlias 指令到我的错误日志中的目录。感谢您的帮助,我已经解决了这个问题以上是关于Apache2 CGI 配置的主要内容,如果未能解决你的问题,请参考以下文章