- ベストアンサー
Fedora Core1サーバーでCGIが利用できません
Fedora Core1でwebサーバーを立てたのですが、実行しようとすると「500 Internal Server Error」となってCGIが動きません。 perlへのパスやパーミッションの設定も見直しましたが、どこの設定が間違っているか分からないので、設定方法を教えてもらえないでしょうか? 現在の環境は ホスト名:saba.dyndns.org perlのパス:/usr/local/bin/perl CGIを仕えるようにしたいユーザー:guest CGIを設置するディレクトリ:/home/guest/cgi-bin/ Apacheのバージョンは2.0.49 となっています。 また以下はhttpd.confの抜粋です。 Listen *:80 #ScriptAlias /cgi-bin/ "/var/www/html/" ScriptAlias /cgi-bin/ "/home/guest/public_html/cgi-bin/" AddHandler cgi-script .cgi .pl <Directory "/home/guest/public_html/"> Options ExecCGI AllowOverride None Allow from all Order allow,deny </Directory> <Directory /home/*/public_html> AllowOverride FileInfo AuthConfig Limit Options Includes ExecCGI FollowSymLinks <Limit GET POST OPTIONS> Order allow,deny Allow from all </Limit> <LimitExcept GET POST OPTIONS> Order deny,allow Deny from all </LimitExcept> </Directory> 長文失礼しました。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
回答が遅くなりました。 テストできる環境があったのでそこで色々と実験してみました。 実験環境 OS:RedHatLinux9.0 perlのパス:/usr/bin/perl webサーバー:apache2.0 結果 1)「簡単なスクリプト」は正常に実行できました。 2)スクリプトの先頭にあるperlへのパスを/usr/local/bin/perlとするとエラーになりました。 エラーログは、、 failed to open log file fopen: Permission denied Premature end of script headers: test.cgi とrdenと同じものとなりました。 perlのパスを変更されたようですが理由は何でしょうか? デフォルト(/usr/bin/perl)に戻したらどうなりますか? 蛇足ですが、、、 >補足ですが、上記のクライアントのIPアドレスの最後の「xxx」のところはちゃんと数字が入っています。 >書くときに「アドレスの最後は伏せた方がいいのかな?」くらいの気持ちで伏字にしたので他意はありません。 192.168で始まるIPはプライベートアドレスなので伏字にする意味はありません。二台以上のPCでlocalでテストしていることがわかるだけです。
その他の回答 (2)
- frfr
- ベストアンサー率56% (9/16)
いくつか質問があります。 1.パーミッションの具体的な値は? 2.ごく簡単なスクリプトを実行させて見ましたか? 3.エラーログはどうなっていますか? これらの情報があるとより確かな回答が得られと思います。
お礼
補足ですが、上記のクライアントのIPアドレスの最後の「xxx」のところはちゃんと数字が入っています。 書くときに「アドレスの最後は伏せた方がいいのかな?」くらいの気持ちで伏字にしたので他意はありません。 自分にはこのエラーメッセージが意味するところがよく分かりません。 ご指導よろしくお願いします。
補足
レスありがとうございます。 >1.パーミッションの具体的な値は? pubulic_html[755]/cgi-bin[755]/test.cgi[755] となっています。 >2.ごく簡単なスクリプトを実行させて見ましたか? #!/usr/local/bin/perl print "Content-Type: text/html\n\n"; print "Your_IP=$ENV{'REMOTE_ADDR'}\r\n"; をtest.cgiとして実行してみましたが、「500 Internal Server Error」と出てしまいます。 >3.エラーログはどうなっていますか? test.cgiを実行しようとしたところ以下のようなログが残りました。 [Tue Jun 15 21:47:08 2004] [error] [client 192.168.11.xxx] failed to open log file [Tue Jun 15 21:47:08 2004] [error] [client 192.168.11.xxx] fopen: Permission denied [Tue Jun 15 21:47:08 2004] [error] [client 192.168.11.xxx] Premature end of script headers: test.cgi
- kalze
- ベストアンサー率47% (522/1092)
設置する(したい)ディレクトリと、 httpd.confで設置すると宣言しているディレクトリが異なります。 ScriptAlias /cgi-bin/ "/home/guest/cgi-bin" にする。 perlのパスは自分で設定されました? RHL9まではrpmパッケージでいれると、 /usr/bin/perl だった気がするんですが。 <Directory /home/*/public_html> のオプションにEcexCGIつけるなら、public_html以下に置くと実行されますけど、それは別にいいんでしょうか? (まぁsuexecいれてればsuexecは有効になるでしょうけど)
お礼
早速のレスありがとうございます。 ScriptAliasのディレクトリですが、これはこちらの間違いでした。 CGIの設置ディレクトリは/home/guest/public_html/cgi-bin/でした。申し訳ありません。 perlのパスですが、これは自分で変更しました。 which perlコマンドでも確認しているのであっていると思います。
お礼
返事が遅れました。 一度全てOSを入れなおし、設定をやり直したところ、見事にCGIが動くようになりました。 結局原因は分からずじまいとなってしまいましたが、恐らくhttpd.confの設定をいじり過ぎたのが原因ではないかと思います。 今度はperlのパスは/usr/bin/perlのままで使っています。 色々とありがとうございました。
補足
>伏字にする意味はありません 失礼しました。 >perlのパスを変更されたようですが理由は何でしょうか? http://fallenangels.zive.net/fedora/ ↑のサイトでperlのパスを変更していたのでその通りにやりました。なので、あまり深い意味はありません。 >デフォルト(/usr/bin/perl)に戻したらどうなりますか? /usr/local/bin に/usr/bin/perl へのリンクファイル(/usr/local/bin/perl)があったのでそれを削除して設定をデフォルトに戻してみましたが、やはり同じエラーが出てしまいました。 初めてのサーバー構築で、もしかしたら変なところをいじってしまったのかもしれないので、一度サーバーを再構築してみようと思います。恐らく1日2日で終わると思うので、それでも駄目だったらまたご教授お願いします。