web-dev-qa-db-ja.com

CGIがリンクされたフォルダーにある場合、Apache2のCGIスクリプトは403を禁止します

Ubuntu 16.04を仮想マシンとして実行しています。 Apache2 2.4.18がインストールされています。

使用したいcgiスクリプトを含むフォルダーがあります。そのために、/ usr/lib/cgi-bin内のそのフォルダーへのシンボリックリンクを配置しました。

Firefox localhost/cgi-bin/linkName/script.cgiからスクリプトを呼び出すと、403 forbiddenエラーが発生します。

Script.cgiを/usr/lib/cgi-binにコピーしてlocalhost/cgi-bin/script.cgiで呼び出すと、実行されますが、周囲のファイルとフォルダーがないためソフトウェアエラーが発生します。

リンクとリンク先のフォルダーの両方をchmod 777持っていますが、それでもエラーが発生します。

すべてのファイルとフォルダーを/usr/lib/cgi-binにコピーする以外に、他に何ができますか?

2
Gadi Armony

これは、シンボリックリンクが、"virtualhost".confファイルにリストされているディレクトリの外部にあるディレクトリを指しているためです。したがって、/etc/Apache2/Apache2.conf(または/etc/Apache2/sites-available/*.confまたは/etc/Apache2/conf-available/*.conf)ファイルに必要なディレクティブを書き留めて、/usr/lib/cgi-binにアクセスする必要があります。何かのようなもの:

Alias /cgi-bin/linkName /usr/lib/cgi-bin

<Directory /usr/lib/cgi-bin>
        Options +ExecCGI FollowSymLinks
        DirectoryIndex disabled
        AllowOverride None
        Require all granted
        # etc..   
</Directory>

そしておそらく(しかし、それが必要かどうかはわかりません):Sudo chown -R www-data:www-data /usr/lib/cgi-bin

Alias /cgi-bin/linkName /usr/lib/cgi-binを作成する場合、シンボリックリンクを作成する必要はありません。

0
pa4080