• ベストアンサー

CGIがうまく動作しない

Linuxサーバー初心者です。 http://fedorasrv.com/apache-userdir.shtml 上記サイトを参考に、apachiの設定を変更したのですが、 CGIだけうまく動作しません。 「403 Forbidden」 と表示されます。 ちなみにSSIやPHPは正常に表示されます。 なにかいい解決策はないでしょうか? よろしくお願いします。

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

  • ベストアンサー
  • Lean
  • ベストアンサー率72% (435/603)
回答No.7

> which perlの結果ですが、参考サイトと同じ結果でした。 そうなんですか? 参考サイトのCGI(Perlスクリプト)は、下記のようですから使用しているperlコマンドは、1行目の記述(#!/usr/local/bin/perl)から /usr/local/bin/perl だから、参考サイトと同じならご使用の環境でも perlコマンドは /usr/local/bin/perl という事ですよね。 > #!/usr/local/bin/perl > print "Content-type: text/html\n\n"; > print "<html>\n"; > print "<head>\n"; > print "<title>CGI test</title>\n"; > print "</head>\n"; > print "<body>\n"; > print "CGI test\n"; > print "</body>\n"; > print "</html>\n"; で、使用されているLinuxディストリビューションは > LinuxはFedora8を使用。 とあるから、Fedora 8のようですが、パッケージからインストールされたperlコマンドは/usr/local/binディレクトリ配下にインストールされないのですが、別途ご自分でperlコマンドをtarballからインストール等でもされたのでしょうか? [lean@thrud ~]$ cat /etc/redhat-release Fedora release 8 (Werewolf) [lean@thrud ~]$ which perl /usr/bin/perl [lean@thrud ~]$ rpm -ql perl-5.8.8-30.fc8   : /usr/bin/perl   : CGI(Perlスクリプト)に記述されているperlコマンドが、実際に存在するのは /usr/bin/perl なのに間違って /usr/local/bin/perl とすると > [Mon Sep 29 17:17:58 2008] [error] [client 127.*.*.*] Premature end of script headers: index.cgi になります。

iamjusco
質問者

お礼

パスを直したところ、正常に表示されました。 ありがとうございます

iamjusco
質問者

補足

なるほど…… rpm -qf で/usr/local/bin/perlと/usr/bin/perlを使ってみたのですが、前者の方は「そのようなファイルやディレクトリはありません」とでていたので、見間違いだったのかもしれません。 エラーログをみたところ [Tue Sep 30 16:06:34 2008] [error] [client 127.*.*.*] Premature end of script headers: index.cgi だったので、パスを直してみます

その他の回答 (6)

  • fkmgbsie
  • ベストアンサー率0% (0/1)
回答No.6

#!/usr/bin/perl -- もテスト価値ありそうです

iamjusco
質問者

補足

回答ありがとうございます。 試して見たところ bash: !/usr/bin/perl: event not found とでました。 これが原因なのでしょうか?

  • Lean
  • ベストアンサー率72% (435/603)
回答No.5

No.3です。 which perl を実行してperlがどこにあるか確認してください。 例) %which perl /usr/bin/perl 参考にされたサイトだとCGIのPerlコマンドは > #!/usr/local/bin/perl と /usr/local/bin/perl のようですが、これが which perl の結果と同じですか? 異なるならwhich perlの結果に変更してください。 例) %which perl /usr/bin/perl %vi index.cgi #!/usr/local/bin/perl   ↓ #!/usr/bin/perl

iamjusco
質問者

補足

返答ありがとうございます。 which perlの結果ですが、参考サイトと同じ結果でした。

  • ralf124c
  • ベストアンサー率52% (232/446)
回答No.4

SSIが動作してCGIが動作しないならCGI内部の問題です。 エラーメッセージから、正当なHTTPヘッダを出力していないようなので、エラーメッセージか何か出しているんじゃないでしょうか。 リモートで操作可能でPOSTパラメータが無いなら直に実行してみるとかしてみてはどうでしょうか。 もし不可能なら、CGIの最初の方の処理に print "Content-type: text/plain\n\n"; 等を入れてブラウザに何が表示されるのか確認をしてみてください。

iamjusco
質問者

補足

回答ありがとうございます。 ブラウザには以下の文が表示されました。 Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. Please contact the server administrator, host@****.co.jp and inform them of the time the error occurred, and anything you might have done that may have caused the error. More information about this error may be available in the server error log.

  • Lean
  • ベストアンサー率72% (435/603)
回答No.3

Apacheのエラーログ(httpd.confのErrorLogに指定されているログファイル)にはどんなメッセージが出力されてますか。

iamjusco
質問者

補足

回答ありがとうございます。 最新のログだと、 [Mon Sep 29 17:17:58 2008] [error] [client 127.*.*.*] Premature end of script headers: index.cgi と出ました。

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.2

http://ja.wikipedia.org/wiki/HTTP%E3%82%B9%E3%83%86%E3%83%BC%E3%82%BF%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%89 権限の確認または httpd.conf でperl動作可能なdirectiveが書かれているか確認しようね http://httpd.apache.org/docs/2.2/ja/

iamjusco
質問者

補足

回答ありがとうございます。 perl動作可能なdirectiveが書いてある箇所を確認してみます。 参考サイトありがとうございます

  • 123admin
  • ベストアンサー率52% (1165/2221)
回答No.1

設定の見直しが必要では? 「403 Forbidden」というエラーが表示される。 http://www.cdwavmp3.com/dl/qa/download_403error.html どの設定を具体的に直すかについてはご自身でね。 だってLinuxのどのディスビのバージョンかも分からない。 CGIの言語だって不明なんだからね。 かと言ってそれを明記すれば一発解決できる程甘くはないし・・・ まぁここを参考にしてください。 パソコンおやじ http://www.aconus.com/~oyaji/

iamjusco
質問者

補足

回答ありがとうございます。 参考サイトのURLありがとうございます。 申し訳ないのですが、パソコンおやじの方は何処を参照したらいいのでしょうか。 参考までに↓ LinuxはFedora8を使用。 CGIについては、私はよくしらないのですが先ほどのURL通りにやっているのでPerlではないかと思います。

関連するQ&A