web-dev-qa-db-ja.com

オプション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ファイルがありません。

6
Joshi

次のファイルを変更する必要がありました。

/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>
1
Joshi

で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 Hostに出会ったときに、

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

パッケージがインストールされました。

1
Gideon Maina