Day by day
Apache デフォルトcgi-binディレクトリの注意点
投稿者: admin, カテゴリー: FreeBSD
Apacheの設定ファイルでは、ScriptAliasという項目でcgiファイル置き場のディレクトリを指定できます。
デフォルトでcgi-binディレクトリの場所を設定しています。
このディレクトリ内に置かれたファイルはすべて実行ファイルとして処理されるため、そうでないファイルを置いて直にアクセスしようとすると実行できない旨のエラーが出てしまいます。
[Fri Mar 30 15:14:19 2012] [error] [client *.*.*.*] (13)Permission denied: exec of '/hoge/cgi-bin/test.txt' failed, referer: http://hoge/
[Fri Mar 30 15:14:19 2012] [error] [client *.*.*.*] Premature end of script headers: test.txt, referer: http://hoge/
これを回避するには、cgi-binディレクトリをScriptAliasで指定するのではなく、単にAliasとして指定します。
#ScriptAlias /cgi-bin/ "/hoge/cgi-bin/" ← コメントアウト
Alias /cgi-bin/ "/hoge/cgi-bin/" ← 追記
さらに、<Directory>ディレクティブの内容を変更します。
<Directory "/hoge/cgi-bin">
AddHandler cgi-script .cgi ← 拡張子cgiのファイルをCGIスクリプトと認識
#AllowOverride None
AllowOverride Limit ← .htaccessファイル使用可に変更
Options ExecCGI ← CGIスクリプトの使用許可
Order allow,deny
Allow from all
</Directory>
これで直アクセス可能になりました。