• ベストアンサー

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% (1163/2214)
回答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

  • Apache2 - CGIで出力されたファイルの所有者を変更するには?

    Gentoo LinuxでApache2を動かしています。 Apache2の質問です。 UserDirで実行された(mod_userdirで処理される)CGIまたはPHPスクリプトが出力するファイル/ディレクトリの所有者を、リクエストされたユーザディレクトリのuid, gid へ自動的に変更する方法を教えてください。 レンタルサーバーではこのような動作を見掛けるし一般的だと思うのですが設定方法がわかりません。 よろしくお願いします。

  • VistaでCGIが動作しなくなった?

    初めまして、PerlでのCGIプログラミング初心者です。 今回、PCを新しく買い替えたので、データの移行作業がやっと終わったところなのですが、 前のPCで正常にできていたCGIプログラムが動作しなくなってしまいました。 現象はCGIプログラムのソースがそのまま表示されてしまうというものです。 初めに、バージョン情報等を記載しますと、 OS:Windows XP Home Edition → Windows Vista Home Premium Apache:apache_2.0.54-win32-x86-no_ssl → apache_2.0.63-win32-x86-no_ssl activeperl:5.8.7.813 → 5.10.0.1005 私がやったことと言えば、10日で覚えるシリーズの本に書いてあったとおり、 httpd.confの内容を書き換えただけなのですが、apacheは正常に動作するのに、 CGIプログラムがそのまま出力されてしまいます。 以下にhttpd.confの書き換え内容を記載します。 Option Indexes FollowSymLinks → Option Indexes FollowSymLinks Includes ExecCGI AllowOverride None → AllowOverride All #AddHandler cgi-script .cgi → AddHandler cgi-script .cgi #AddType text/html .shtml #AddOutputFilter INCLUDES .shtml → AddType text/html .shtml AddOutputFilter INCLUDES .shtml ここは何度も確認しましたし、念のため本に付属のCD-ROMに入っていたファイルを そのままコピーして試したりもしたので、この設定が間違っているということはないと思います。 Apacheが正常に動作して、CGIプログラムが正常に動作しないということは、 この設定以外何がいけないのでしょうか…。また、前のPCでのフォルダ構成や設定とも見直したのですが、 XPだとできてVistaだとできないという認識でいいのでしょうか?変わったところといえば、 ApacheやActivePerlのバージョンとOSくらいですが、バージョンやOSが変わると必要な設定なども やはり変わってしまうのでしょうか。OS関連で調べてみたのですが、有力な情報がなかったので、質問させていただきます。 お手上げ状態です、どなたかご助言をお願いいたします。

    • 締切済み
    • CGI
  • PHPでプロセスとCGI

    Linuxサーバーで、PHPを使ってWWWページが見れるようになったのですが、 これをApacheのプロセスで動作させる方法と、CGIで動作させる方法の仕方が知りたいです。 また、現在どちら(Apacheのプロセス/CGI)で動いているかもわかりませんので、それを区別する方法はあるのでしょうか? がCGIでなくてApacheのプロセスで動いている

    • ベストアンサー
    • PHP
  • Fedora7でCGIが動きません

    CGIとPHPを使おうと思い、 Apacheで設定したんですけど CGIとPHP両方共に403 Forbiddenと表示されて You don't have permission to access /test.php on this server. ---------------------------------------------------------------- Apache/2.2.8 (Fedora) Server at 192.168.11.240 Port 80 この様に表示されてしまいます。 エキサイトで翻訳してみると あなたはこのサーバにアクセス/test.phpに許可を持っていません。 って書いて有るようですが如何すればアクセスした人全てに 許可をする事が出来るんですか?Apacheのhttpd.confの何処を修正 すれば宜しいのでしょうか?CGIの方はchmod 755 フォルダ名.cgi って打ち込んでパーミッションを変更しましたが駄目でした。

  • ローカルサーバーでの動作確認

    CGI超初心者です. 翔泳社のPERL/CGI辞典を見ながらCGIに挑戦してます. 今ローカルサーバーでの動作確認すべく奮闘しているのですがCGI/SSIを使用するためのAPACHEの設定で頭を悩ませてます. CGIはうまく表示できたのですがどうしてもSSIが表示されないのです. ファイルは本通りに記述したつもりです. 「test.shtml」 <HTML> <BODY> <!--#exec cmd="test.pl" --> </BODY> </HTML> 「test.pl」 #!C:\perl\bin\perl print"hello!"; CGI/SSIはドキュメントルートで制限なく使用できるよう設定しました. test.shtmlは表示されてるようなんですがそこにtest.plが読み込めてないようです(よく分かりませんが…) どこが悪いのか全く分かりません. ブラウザ上でこのtest.shtmlのソースを確認したら<!--#exec cmd="test.pl" -->の部分が表示されてませんでした. 全くの初心者でどのような情報を開示すればよいのか分からないので必要な情報があれば教えていただけるとありがたいです.

    • ベストアンサー
    • CGI
  • CGIの設定で困っています

    FREEのスケジュール表を2つのサーバーに アップいたしました。 一つのサーバーは問題なく作動するのですが、 もう一つのサーバーはエラーが出てしまいます。 CGIファイルにブラウザでアクセスした際の 表示内容は、下記の通りです。 Forbidden You don't have permission to access /test/cgi-bin/history.cgi on this server. -------------------------------------------------- Apache/1.3.12 Server at www.ドメイン名.jp Port 80 です。 CGI、SSIともに使用はできるのですが、 どのように設定すればよろしいでしょうか。 どうか教えてください。よろしくお願いいたします。

    • 締切済み
    • CGI
  • PHPのインストールについて教えてください。

    linux9にapache2.0.54 PHP4.4.0 をインストールしたのですが、phpinfo.phpというサンプルをつくり実行すると、 Forbidden You don't have permission to access /phpinfo.php ======================== Apache/2.0.54(Unix) mod_jk2/2.0.4 PHP/4.4.0 Server at 127.0.0.1 Port 80 と表示されてしまいます。 PHP初心者なのでどなたか助けていただけませんか? よろしくお願いします。 indexページやCGIは正常に動いています。

    • ベストアンサー
    • PHP
  • Rubyのcgiが動作しません。

    下記のように4行のルビーのcgiを作りました。 ファイル名rb.cgi #!/usr/bin/ruby print <<EOF あああ EOF これをRubyを提供しているapacheサーバにアップロードし パーミッションを777にしました。 文字コードはEUC、改行はLFのみです。 しかし、Internal Server Errorが表示されます。 そこで、サーバにログオンし、このcgiファイルの ディレクトリまで移動し、./rb.cgiを実行すると あああと表示されます。また、このcgiファイルと 同一ディレクトリにあるparlのcgi(掲示板)は 正常動作しています。 どこが間違っているのでしょうか?

    • ベストアンサー
    • CGI
  • FC6でのWevサーバ構築質問です。

    早速ですが質問させていただきます。 Fedoraで自宅サーバー構築(http://fedorasrv.com/) を参考に、ルータにぶら下がるFedora6にて(外部の固定IPは持っておりません)構築をしています。 1.内部向けDNSサーバー構築(BIND) http://fedorasrv.com/bind-lan.shtml 2.Webサーバー構築(Apache) http://fedorasrv.com/apache.shtml の手順で作業をしておりますが、2の作業がうまくいっておりません。 index.htmlを見ようとするだけで、403のエラーが帰ってきます。 Windowsであれば多少の知識はあるつもりなのですが、、、 Linuxのこういう現象について、どのような情報を提供したらよいのかもわからず、、、 丸投げ質問で申し訳ありませんが、解消方法か、あるいはどのような情報を提供して質問したらよいのかを教えてください。 なにとぞよろしくお願いいたします。

  • CGIの設定について

    現在、 HDE Linux Controller2.0 を使用してサーバを管理しているのですが、 CGIの設定ができません。 ファイルをアップしアクセスしますと Forbidden You don't have permission to access /cgi-bin/××××.cgi on this server. ------------------------------ Apache/1.3.22 Server at www.××××.jp Port 80 のメッセージが出てしまいます。 どのようにしたらCGIが使えるのでしょうか、教えてください。 よろしくお願いいたします。