- ベストアンサー
CGI実行環境下の.jsや.cssが動きません
環境 OS:RedhatLinux ES3 WevServer:Apache/2.0.54 Perl 5.8.0 CGIを設置しているディレクトリのなかに、JapaScriptを書いている xxx.jsとスタイルを定義しているxxx.cssを置いているのですが、 CGIを実行すると、Apacheのエラーログの中に パーミッションが755だと (8)Exec format error: exec of '/hoge/xxx.css' failed, (8)Exec format error: exec of '/hoge/xxx.js' failed, パーミッションを666すると (13)Permission denied: exec of '/hoge/xxx.css' failed, (13)Permission denied: exec of '/hoge/xxx.js' failed, が出力されてしまいます。 もちろん、JavaScriptのエラーも出てしまいます。 .jsや.cssを正常に読み取らせるにはどのようにhttpd.confを 設定すればよいのでしょうか? ※ちなみに、CGIの実行を許可(ScriptAlias)していない ディレクトリでは.jsや.cssは正常に動いています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ScriptAlias で指定された場所においては、Apache は全てのファイルを CGI スクリプトとみなしてしまいます。 なので、拡張子が .cgi、.pl のファイルだけ CGI とみなして欲しいのであれば、CGI スクリプト以外のファイルを別のディレクトリに置くか、以下のように設定してあげる必要があります。 Alias xxx yyy <Directory yyy> AddHandler cgi-script .cgi .pl Options ExecCGI </Directory>
その他の回答 (1)
cgiを許可してるだけで 何がcgiなのかを指定してないからとか http://httpd.apache.org/docs/2.0/howto/cgi.html 質問のエラーからはどちらも実行ファイルとして実行しようとしていると取れるからCGI側でそのファイルを実行ファイルとして開こうとしたりする記述があるのでは?
お礼
SAYKAさんご回答ありがとうございます。 教えていただいたサイトはとても参考になりました。
お礼
entreeさんご回答ありがとうございました。 <Directory yyy> AddHandler cgi-script .cgi .pl Options ExecCGI </Directory> こちらの記述は既にしていましたが、entreeさんの回答をヒントに ScriptAlias の設定をコメントアウトすることで、正常に 動かすことができました。 ありがとうございました。