Apache-2.2
Options ExecCGI 在這個目錄下是關閉的:/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 文件。
我不得不修改以下文件:
/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
安裝包。