CentOS5にてcgi-binディレクトリ配下に通常のhtmlファイルを配置した際、 デフォルト動作ではエラーとなったため、注意点として記録しておきます。 環境 †
具体的な症状 †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 解決法 †デフォルトの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で) |