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>

これで直アクセス可能になりました。
 

コメントを受け付けておりません。

フリースペース

バナーやブログパーツなどを貼って、ご自由にお使いください。