选项ExecCGI在这个目录中是closures的:/var/www/index.py

我已经看了很多类似的问题,但似乎没有为我工作的职位

我有以下/etc/apache2/httpd.conf文件:

<Directory /var/www/index.py> Options +ExecCGI </Directory> <Directory /var/www> Options +ExecCGI AllowOverride None Order allow,deny Allow from all AddHandler cgi-script .py DirectoryIndex index.py </Directory> <Directory /var/www/tiles> AddHandler mod_python .py PythonHandler TileStache::modpythonHandler PythonOption config /home/TileStache/tilestache.cfg </Directory> 

当我尝试访问主页为:只是主机名: http : //exampleHost.com我在错误日志上得到以下错误:

 Options ExecCGI is off in this directory: /var/www/index.py 

但是当我去http://exampleHost.com/index.py它工作正常。

所以我猜是重写/ var / www目录? 我没有/ var / www目录中的.htaccess文件。

我不得不修改follwing文件:

 /etc/apache2/sites-enabled/000-default 

更改了/ var / www目录以包含+ ExecCGI和AddHandler,如下所示:

  <Directory /var/www/> Options Indexes FollowSymLinks MultiViews +ExecCGI AllowOverride None Order allow,deny allow from all AddHandler cgi-script .py </Directory> 

启用cgi模块后

 sudo a2enmod cgi 

你可以去修改这个文件

 /etc/apache2/sites-enabled/000-default 

并find这个部分

 ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin/"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> 

这告诉Apache,当你遇到的URL主机例如

 localhost/cgi-bin/ 

它应该检查你所请求的文件/ usr / lib / cgi-bin目录,如果它发现它执行它。 现在你可以通过添加目录指令中的目录来使其从任何目录执行,例如,如果你希望它是/ var / www(cgi文件所在的位置),你可以

 ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/var/www/"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> 

与那个请求

 localhost/script.cgi 

应该完美地工作。 另外确保你有

 libapache2-mod-perl 

安装包。