• 締切済み

RubyでCGIが動きません。

RubyでCGIを作ってApacheを使ってアプリの練習をしようとしていますが、CGIのお置き場所かApacheの設定かCGIの書き方が悪いのかIEで動かすとCGIの内容を中途半端に実行して下記のようになってしまいます。 #!/ruby/bin/ruby -Ks print "Content-type: text/html\n\n" print "" print "" print "" print "" print "こんにちは、Ruby!" print "" CGIのソースは #!/ruby/bin/ruby -Ks print "Content-type: text/html\n\n" print "<html><head>" print "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=Shift_JIS\">" print "<title>RubyでCGI</title></head>" print "<body>" print "こんにちは、Ruby!" print "</body></html>" 一番簡単なプログラムだと思うのですが、どこがいけないのでしょうか。ちなみにOSはVISTAです。 ちょっと気になるのはApacheMonitorServerが動かないこともあります。タイトルにはErrorと出ますが、メッセージでは「この操作を正しく終了しました」と出ます。 ちなみにApacheは動いてます。LocalHostで確認できました。 どなたかどうすれば良いのか教えて頂けないでしょうか。 よろしくお願いします。結構長い時間悩んでいます。

  • CGI
  • 回答数1
  • ありがとう数3

みんなの回答

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

Rubyスクリプトとして実行されず、ソースがそのまま送信されてるみたいだから、apache側の問題では。 ScriptAliasとかAddHandlerとかの設定を見直してみては。

sato0225
質問者

お礼

回答ありがとうございます。 確認してみました。 (1)ScriptAlias /cgi-bin/ "C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin/" (2)#AddHandler cgi-script .cgiになっています。 これって”#”を取れば良いのでしょうか? Perlの時には .plを追加したような?。Rubyの場合は.rbなんか 付けるのでしょうか。 素人で申し訳ありませんがご教示ください。 よろしくお願いいたします。

関連するQ&A

  • cgi(perl)でパラメータが渡せない

    以下のプログラムでnum=9が伝わらないので、ミスをご指摘ください。 グラフィカルなアクセスカウンタを表示させようとしていますが うまくいかないのでテキストモードでデバッグしています。 [ /usr/local/apache2/htdocs/gif-view.html ] <html> <head> <meta http-equiv="Content-type:" content="text/html; charset=UTF-8"> <title>gif-view</title> </head> <body> <iframe src="/cgi-bin/gif-test.cgi?num=9"></iframe> <!-- <img src="/cgi-bin/gif-test.cgi?0" width=50 height=50> --> </body> </html> [ /usr/local/apache2/cgi-bin/gif-view.cgi ] permission は 755 にしています。 #!/usr/bin/perl print "Content-Type: text/plain;\n\n"; print "gif-test.cgi\n"; $prm0 = @ARGV[0]; if($prm0 = "") { print "Param is exist\n"; } else { print "Param is empty\n"; 実行結果として gif-test.cgi Param is empty となります。 httpd.conf で Script Alias /cgi-bin/ "/usr/local/apache2/cgi-bin/" を有効にしています。

    • ベストアンサー
    • Perl
  • CGIが動作しません。

    最近、Perlを初めたのですが、 CGIがうまく動作しません。 他のCGIは動作しているので CGIは動作する環境だと思います。 http://からフルパスでCGIを実行しても、 以下のエラーがでます。 -------------------------------------  500 InInternalServerError  サーバーエラーです。  以下の理由が考えられます。  パーミッション等の設定が  間違っている可能性があります。  サイト管理者にお問い合わせ下さい。 ------------------------------------- ちなみに以下のような簡単なCGIも同様です。 ===================================== #!/usr/local/bin/perl print "Content-type: text/html\n\n"; print "<html><head>\n"; print "<meta http-equiv=Content-Type content=text/html; charset=x-sjis>\n"; print "<title>StartCGI</title></head>\n"; print "<body>\n"; print "<p align=center><font size=4>初めて書いたCGI</font></p>\n"; print "</body></html>\n"; exit; =====================================  なぜなんでしょう。 困ってます。 ご教授の程、宜しくお願い致します。

    • ベストアンサー
    • CGI
  • CGIが文字化けしてしまう。(Perl)

    環境 WinXP    Apache ActivePerl 開くソフトは「Tera pad」      でやっています。ソースは #!/usr/local/bin/perl print "Content-type: text/html\n\n"; print "<HTML>\n"; print "<HEAD><TITLE>CGI TEST</TITLE></HEAD>\n"; print "<BODY>ああああ。</BODY>\n"; print "</HTML>\n"; __END__ です。「ああああ」部分が「‚ ‚ ‚ ‚ B」 と表示されます。 どなたか解決方法ご存知の方いらっしゃいましたら ご回答お願いします。

    • ベストアンサー
    • CGI
  • Ruby CGI HTTPヘッダ

    Rubyで、 CGIがクライアント(ブラウザ等)から受けたHttpリクエストヘッダとその値を全て取得して表示したいです。(どのようなヘッダが付与されても) 以下を例に教えてください。 #!/usr/bin/ruby require 'cgi' cgi = CGI.new puts "Content-Type:text/html\n\n" puts "<html>\n" puts "<body>\n" #ここにどのように書いたら良いですか? puts "</body></html>\n"

  • Apacheでcgiができないんです。

    以下のホームページと同じように、設定したのですが。。。 http://www.futomi.com/lecture/apache/config.html 下のcgiは実行できます。 #!/usr/local/bin/perl print "Content-type: text/html\n\n"; print "<HTML>\n"; print "<HEAD>\n"; print "<TITLE>Apache</TITLE>\n"; print "</HEAD>\n"; print "<BODY>\n"; print "<H2>Welcome to my computer, Apache Server!</H2>\n"; print "</BODY>\n"; print "</HTML>\n"; しかし、下のcgiは実行できません。htmlファイル、cgiファイル共に、あるホームページからコピペしたので、間違いないと思います。ここではhtmlファイルは書きませんが、以下のURLです。 http://www2j.biglobe.ne.jp/~apollo/server/apacuse.html #!/usr/local/bin/perl $countfile= "count.dat"; open(IN, "< $countfile"); $count = <IN>; close(IN); $count++; open(OUT,"> $countfile"); print OUT $count; close(OUT); print "Content-type: text/plain\n\n"; print $count;

    • ベストアンサー
    • CGI
  • CGI勉強中(初心者です)

    #!/usr/bin/perl print "content-type:text/html\n\n"; print "<HTML>\n"; print "<head><title>CGI</title></head>\n"; print "<BODY>\n"; print "<H1><FONT COLOR=\"#FF0000\">こんにちは</FONT></H1>\n"; print "</BODY>\n"; print "</HTML>\n"; というCGIつくりました。 プロバイダの説明には Perlの場所 /usr/bin/perl または /usr/local/bin/perl となっていますが、 どこにどう置いて(ホームディレクトリでしょうか?)、どうやって起動させてよいのかさっぱりわかりません。 ご教授ください。

    • ベストアンサー
    • CGI
  • 「 <!--#exec cgi="***.cgi" --> 」が表示されません

    「main.cgi」というファイルを作り、単純にHTMLを表示するだけのCGIファイルを作成しました。 こんな感じ ------------main.cgi------------ #!/usr/local/bin/perl print "Content-type:text/html\n\n"; print <<EOM; <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> <title></title> </head> <body> <略> </body> </html> EOM __END__ -------------------------------- それで、ほかのHTMLファイルに <!--#exec cgi="main.cgi" --> と入力してそのページを見てみると、 [an error occurred while processing this directive] 上の文章が表示されていました。 どうすれば「main.cgi」の内容を表示することができるのでしょうか? よろしくお願いします。

    • ベストアンサー
    • Perl
  • cgiのプログラム

    前自分が質問したアカウントの管理についてなんですが、今度はそれをcgiプログラムに書き換えたいと思っています。そこで、ログインのページはできたのですが、認証できたかどうかのページがうまくいきませんでした。そこでなんですが、どう書き換えたらよいのでしょうか?? お願いします! ログインのページと認証のページのプログラムを両方書いておきます。 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"> <title>ログインページ</title> </head> <body> ログインしてください。<br> 自分のアカウント名とパスワードを入力してください。<br> <form method="GET" action="http://verify.cgi"> アカウント名: <input type="text" name="an"> <br> パスワード:<input type="password" name="pw" size="15"> <input type="submit" value="ログイン"> </form> </body> </html> #!/usr/local/bin/ruby print "Content-type: text/html; charset=euc-jp\n\n" $KCODE = "e" require "CGI" cgi = CGI.new account = cgi["an"] password = cgi["pw"] hash_account = {} fo = open("accountData.txt", "r") i = 0 while(line = fo.gets) ary = line.split hash_account[ary[0]] = ary[1] i = i + 1 end fo.close account = gets.chop password = gets.chop print <<EOS <HTML> <head> <meta http-equiv="content-type" content="text/html; charset=EUC-JP"> <title>アカウント認証</title> </head> <body bgcolor="skyblue"> EOS if (hash_account[account] == password) print "ようこそ、" #{account}"さん。それではゲームを始めましょう。" elsif hash_account.has_key? account print "パスワードが間違っているようです。" else print #{account}"というアカウントはありません。" end print <<EOS </body> </html> EOS 動作環境はruby 1.8.7 (2010-01-10 patchlevel 249) [i686-linux]になります。 よろしく、お願いします。

    • ベストアンサー
    • CGI
  • TOK2で基礎的なCGIをUPしたが動かない。

    TOK2(http://tok2.com/)に「posttest2.cgi」をUPしました。 ファイルマネージャで確認すると、CGIのパーミッションは700、 CGIを設置するディレクトリーのパーミッションは701です。 以下 posttest2.cgiです。 -------------------START----------------------- #!/usr/bin/perl print "Content-Type:text/html\n\n"; print "<html>\n"; print "<head><title>テスト</title></head>\n"; print "<body>\n"; print "TEST"; print "</body></html>\n"; ------------------- END ----------------------- IEでこのCGIを開くと「500 Internal Server Error 」になってしまいます。。 なにが悪いのでしょう?

    • ベストアンサー
    • CGI
  • Mac OSX LionでCGI/Ruby動かず

    Mac OSX Lionを使っています。 CGIでRubyを使いたいと思い、 以下のことを試したのですが、 500 Internal Server Error となってしまいます。 ◆やったこと 以下のファイルを /Library/WebServer/CGI-Executables に置きました。 (改行コードはLFとしました) --test.cgi--- #!/usr/bin/ruby print "Content-Type: text/html¥n¥n" puts "Hello Ruby" ----- そしてchmod 777としてブラウザから http://localhost/cgi-bin/test.cgi にアクセスしたところ、 500 Internal Server Error となってしまいます。 その際の/var/log/apache2/error.logは、 Premature end of script headers: test.cgi とだけ表示されます。 なんだか一番最初の所でつまづいてしまい、 めげそうになっております。 よろしくご教授ください。

    • ベストアンサー
    • CGI

専門家に質問してみよう