Apache-2.2

Options ExecCGI 在這個目錄下是關閉的:/var/www/index.py

  • January 17, 2020

我看過很多有類似問題的文章,但似乎沒有一個對我有用

我有以下 /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 文件。

我不得不修改以下文件:

/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

並找到閱讀此內容的部分

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 是否有您請求的文件,如果找到它會執行它。現在您可以通過在 Directory 指令中添加目錄來使其從任何目錄執行,例如,如果您希望它是 /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

安裝包。

引用自:https://serverfault.com/questions/524477