電子書籍の厳選無料作品が豊富!

Linuxサーバー初心者です。

http://fedorasrv.com/apache-userdir.shtml
上記サイトを参考に、apachiの設定を変更したのですが、
CGIだけうまく動作しません。
「403 Forbidden」
と表示されます。
ちなみにSSIやPHPは正常に表示されます。

なにかいい解決策はないでしょうか? よろしくお願いします。

A 回答 (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

になります。

この回答への補足

なるほど……
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

だったので、パスを直してみます

補足日時:2008/09/30 16:06
    • good
    • 0
この回答へのお礼

パスを直したところ、正常に表示されました。

ありがとうございます

お礼日時:2008/10/01 09:59

#!/usr/bin/perl --


もテスト価値ありそうです

この回答への補足

回答ありがとうございます。

試して見たところ
bash: !/usr/bin/perl: event not found
とでました。
これが原因なのでしょうか?

補足日時:2008/09/30 09:55
    • good
    • 0

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

この回答への補足

返答ありがとうございます。

which perlの結果ですが、参考サイトと同じ結果でした。

補足日時:2008/09/29 17:47
    • good
    • 0

SSIが動作してCGIが動作しないならCGI内部の問題です。


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

この回答への補足

回答ありがとうございます。
ブラウザには以下の文が表示されました。

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.

補足日時:2008/09/29 17:44
    • good
    • 0

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

この回答への補足

回答ありがとうございます。

最新のログだと、
[Mon Sep 29 17:17:58 2008] [error] [client 127.*.*.*] Premature end of script headers: index.cgi

と出ました。

補足日時:2008/09/29 17:18
    • good
    • 0

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

http://httpd.apache.org/docs/2.2/ja/

この回答への補足

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

参考サイトありがとうございます

補足日時:2008/09/29 17:04
    • good
    • 0

設定の見直しが必要では?



「403 Forbidden」というエラーが表示される。
http://www.cdwavmp3.com/dl/qa/download_403error. …

どの設定を具体的に直すかについてはご自身でね。

だってLinuxのどのディスビのバージョンかも分からない。
CGIの言語だって不明なんだからね。

かと言ってそれを明記すれば一発解決できる程甘くはないし・・・

まぁここを参考にしてください。

パソコンおやじ
http://www.aconus.com/~oyaji/

この回答への補足

回答ありがとうございます。

参考サイトのURLありがとうございます。
申し訳ないのですが、パソコンおやじの方は何処を参照したらいいのでしょうか。

参考までに↓
LinuxはFedora8を使用。
CGIについては、私はよくしらないのですが先ほどのURL通りにやっているのでPerlではないかと思います。

補足日時:2008/09/29 16:57
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!