- ベストアンサー
cgi-binアクセスでForbidden、localhost/cgi-bin/index.cgiアクセスでInternet Server Errorになる問題の解決方法は?
- Windows Vista環境で、cgi-binフォルダへのアクセスがForbiddenとなり、localhost/cgi-bin/index.cgiへのアクセスでInternet Server Errorが発生します。
- Apache 2.0.63をインストールし、設定は正しく行われており、cgi-scriptの設定も行っていますが、問題は解決していません。
- 他の設定や確認するべき項目があれば教えていただきたいです。修正版のリリース情報や中身の変更も確認しましたが、問題の解決には至っていません。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
動く筈のCGIが動かない件、本当にスクリプトは大丈夫ですか? perl -wc は、スクリプトの 1行目の妥当性もチェックしてくれますか? これは、Perl言語のシンタックスの枠外です。 ご自分の環境に合った内容が記述されていますか? あるいは、suexec 関連は疑ってみましたか? もしも、Windows版Apache と Cygwin版Perl の組合せだったりすると、苦労も多いでしょう。 一般に、インターネットから取得した情報やコード類が自分の環境にドンピシャリであることはそんなに多くは無いですよ。
その他の回答 (3)
- hrm_mmm
- ベストアンサー率63% (292/459)
cgi-bin/ でforbiddenとなるのは、ファイル名がない時に表示するファイルを指定してないから、または、DirectoryIndexに指定したファイル名のファイルが存在しないから。 DirectoryIndex はどのようになっていますか? ファイル名でアクセスして、エラーとなるのは、エラー内容から考えると、1行目のプログラム呼び出し指定を間違ってるか、そのプログラムの方にアクセス権がないか。
- zxcv0000
- ベストアンサー率56% (111/196)
forbidden と Internet Sever Error は原因が別の可能性が高いと思います。 # 端的には、Internet Sever Error はCGIスクリプトのシンタックスエラーでも出るんじゃ無いでしょうか。 # forbidden は、 Options Indexes が無いとか。 ただし cgi-bin ディレクトリの一覧表示許可は、セキュリティ上有害というのが通説の様です。 apache2 のエラーログには、何か記録されてませんか?
お礼
簡単なソース(perl -wc test.cgiで試したもの)でやってもやはりだめなのでスクリプトが原因ではないと思います… <Directory "C:/www/cgi-bin"> AllowOverride None Options ExecCGI Order allow,deny Allow from all </Directory> これがcgi-binディレクトリのapache上の設定です。 http://localhost/cgi-bin/test.cgiにアクセスし、エラーログを 見たところ 指定されたパスが見つかりません。 : couldn't create child process: 720003: test.cgi 指定されたパスが見つかりません。 : couldn't spawn child process: C:/www/cgi-bin/test.cgi この二つが書き込まれていました。
- 神崎 渉瑠(@taloo)
- ベストアンサー率44% (1016/2280)
http://httpd.apache.org/docs/2.0/howto/cgi.html ScriptAreasを指定してある場合は、 そのcgi-binディレクトリのアクセス許可はありますか?
お礼
原因は1行目にあったようです・・・ てっきり#!/usr/local/bin/perlだと思っていたのですが 実際はlocalディレクトリがなく#!/usr/bin/perlでした。 前にテスト環境で試した後サーバーにあげるとき わざわざlocal入れたの思い出しました。ありがとうございました。