[PR]

[PR]


CentOS5にてcgi-binディレクトリ配下に通常のhtmlファイルを配置した際、
デフォルト動作ではエラーとなったため、注意点として記録しておきます。
#contents
*環境 [#xc1ea055]
-CentOS 5.2
-Apache (httpd-2.2.3-11.el5_1.centos.3)

*具体的な症状 [#d75f8b4c]
cgi-bin/index.htmlなど、通常のhtmlファイルを表示させようとした場合、ブラウザに何も表示されず、真っ白の表示になる。
/var/log/httpd/error_logに、下記のようなエラーが出る。
  [Tue Aug 19 00:29:31 2008] [error] (13)Permission denied: exec of '/var/www/cgi-bin/test/index.html' failed
  [Tue Aug 19 00:29:31 2008] [error] Premature end of script headers: index.html

*解決法 [#md289ff9]
デフォルトのhttpd.confでは、cgi-binに配置されたファイルは全てCGIファイルとして処理するような設定になっています。
これは、httpd.conf内の以下の行が影響しています。
 ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"

ScriptAliasは、指定のディレクトリに配置されたファイルを全てCGIスクリプトとして処理する記述です。htmlファイルはhtmlとして、cgiファイルはcgiとして処理したい場合、ScriptAliasの代わりにAliasを使います。
 Alias /cgi-bin/ "/var/www/cgi-bin/" <=ScriptAliasをAliasに変える
 <Directory "/var/www/cgi-bin">
    AddHandler cgi-script .cgi     <=.cgiのファイルをcgiとして処理する。
    Options ExecCGI          <=ディレクトリ内でのcgi動作を許可する。
   ・・・
 </Directory>

そして、設定をリロードする。

 /etc/init.d/httpd reload (rootで)

*コメント欄 [#t10ec675]
#pcomment(,10,avobe)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS