こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

cgi-binにアクセスするとforbiddenになってします。

apache2.0.63をインストールし設定してもhttp://localhost/cgi-bin/
にアクセスするとforbidden、localhost/cgi-bin/index.cgiに
アクセスするとInternet Sever Errorと出てしまいます。
環境はwindowsvistaでcgi-binフォルダのパーミッションもプロパティ
でアクセス許可をフルコントロールにしたので問題ないと思います。
httpd.confはhttp://win.kororo.jp/archi/www/apache_fast.php
上から「CGI・SSIを使えるようにする」の
「AddHandler cgi-script .cgi //先頭の#を取り除く」までをそのまま真似しました。
それプラスDocumentRoot "パス"の下の<Directory "C:/apache2/htdocs">のパスをDocumentRootと同じパスに設定しました。
それとhttp://blog.goo.ne.jp/xmldtp/e/50e19ae5e407dcf822f40b472e4295e8
もすべて確認しましたが問題なかったです。
もし他に足りないことがあったら教えてください。
ちなみにapache2.0.63はリリースが1月20日とサイトに書いてあったのですが修正されて中身が変わってることもあるのでしょうか。
前は上記の設定だけで出来たのですが・・・

投稿日時 - 2008-12-07 16:16:03

QNo.4536875

すぐに回答ほしいです

質問者が選んだベストアンサー

動く筈のCGIが動かない件、本当にスクリプトは大丈夫ですか? perl -wc は、スクリプトの 1行目の妥当性もチェックしてくれますか? これは、Perl言語のシンタックスの枠外です。 ご自分の環境に合った内容が記述されていますか?


あるいは、suexec 関連は疑ってみましたか?


もしも、Windows版Apache と Cygwin版Perl の組合せだったりすると、苦労も多いでしょう。


一般に、インターネットから取得した情報やコード類が自分の環境にドンピシャリであることはそんなに多くは無いですよ。

投稿日時 - 2008-12-13 13:33:32

お礼

原因は1行目にあったようです・・・
てっきり#!/usr/local/bin/perlだと思っていたのですが
実際はlocalディレクトリがなく#!/usr/bin/perlでした。
前にテスト環境で試した後サーバーにあげるとき
わざわざlocal入れたの思い出しました。ありがとうございました。

投稿日時 - 2008-12-14 05:30:55

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.3

cgi-bin/ でforbiddenとなるのは、ファイル名がない時に表示するファイルを指定してないから、または、DirectoryIndexに指定したファイル名のファイルが存在しないから。
DirectoryIndex はどのようになっていますか?
ファイル名でアクセスして、エラーとなるのは、エラー内容から考えると、1行目のプログラム呼び出し指定を間違ってるか、そのプログラムの方にアクセス権がないか。

投稿日時 - 2008-12-12 21:32:57

ANo.2

forbidden と Internet Sever Error は原因が別の可能性が高いと思います。

# 端的には、Internet Sever Error はCGIスクリプトのシンタックスエラーでも出るんじゃ無いでしょうか。

# forbidden は、 Options Indexes が無いとか。 ただし cgi-bin ディレクトリの一覧表示許可は、セキュリティ上有害というのが通説の様です。

apache2 のエラーログには、何か記録されてませんか?

投稿日時 - 2008-12-09 16:00:58

お礼

簡単なソース(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
この二つが書き込まれていました。

投稿日時 - 2008-12-10 15:19:30

ANo.1

http://httpd.apache.org/docs/2.0/howto/cgi.html

ScriptAreasを指定してある場合は、
そのcgi-binディレクトリのアクセス許可はありますか?

投稿日時 - 2008-12-09 10:51:31