Python Apache2 CGI配置
我在访问我用python编写的非常简单的cgi脚本时遇到了困难,并且在找到解决方案时遇到了太多的困难。我有一种感觉,这将是一个相当容易的解决办法,但我自己也不明白 url:localhost/cgi-bin/test.cgi(我还尝试将其命名为test.py) 我得到的错误是一个简单的404,我认为下面的ScriptAlias可以解决这个问题。此外,如果我尝试访问localhost/cgi-bin/I,我会得到一个403:access-Denied。我尝试将权限重置为777(我知道这很愚蠢),但没有更好的结果 /etc/apache2/httpd.conf(不对default/etc/apache2/apache2.conf进行特殊编辑): test.cgi:Python Apache2 CGI配置,python,apache,ubuntu,default,Python,Apache,Ubuntu,Default,我在访问我用python编写的非常简单的cgi脚本时遇到了困难,并且在找到解决方案时遇到了太多的困难。我有一种感觉,这将是一个相当容易的解决办法,但我自己也不明白 url:localhost/cgi-bin/test.cgi(我还尝试将其命名为test.py) 我得到的错误是一个简单的404,我认为下面的ScriptAlias可以解决这个问题。此外,如果我尝试访问localhost/cgi-bin/I,我会得到一个403:access-Denied。我尝试将权限重置为777(我知道这很愚蠢),但
#!/usr/bin/python
import cgi
#cgi.test()
print 'Content-type: text/html\n\n'
print 'test'
此外,在更改httpd.conf文件后,我还重新启动了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默认值:
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>
1
2服务器管理员webmaster@localhost
3.
4 DocumentRoot/var/www
5.
6个选项下面的符号链接
7.允许不超过
8.
9
10个选项索引跟随符号链接多视图
11允许不超过
12命令允许,拒绝
13允许所有人
14
15
16 ScriptAlias/cgi-bin//usr/lib/cgi-bin/
17
18允许不超过
19选项+执行CGI-多视图+符号链接所有者匹配
命令允许,拒绝
21允许所有人
22
特别是第16行。我从未想过根据您的错误日志查看此目录,您没有编辑正确的配置,或者其他什么。 注意,上面写着/usr/lib/cgi-bin? 只是为了好玩,如果您将脚本复制到/usr/lib/cgi-bin,那么请尝试一下,它是否有效? 这个apache安装在什么操作系统上 还有一件事,在配置文件的某个地方是否有另一个ScriptAlias?
可能这正在覆盖您的/cgi-bin/?映射,您的apache错误日志中有任何线索吗?cgi-bin目录不允许使用direcotry列表,如果直接访问cgi(),该怎么办?我已经提供了一个显示错误的示例。看起来它正在搜索正确的目录。你是对的,我误读了错误日志。我将该文件复制到所提到的目录中,并像champ一样执行。我想更大的问题是为什么会有这个目录?有人在配置中设置了它。这就是为什么我问什么是操作系统。您正在编辑的配置文件的位置是什么?/etc/apache2/httpd.conf是我编辑的。我使用的是默认的/etc/apache2/apache2.conf,它似乎没有提到该目录,/etc/apache2/conf.d/Every系统中的任何文件似乎都以不同的方式分解apache配置。你在linux/unix上吗?find/-name httpd.conf-name apache2.conf-printin/etc/apache2/sites enabled在我的错误日志中有一个文件包含指向目录的另一个scriptAlias指令。多亏了你的帮助,我已经解决了这个问题
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
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>