• ベストアンサー

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(掲示板)は 正常動作しています。 どこが間違っているのでしょうか?

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

  • ベストアンサー
  • root139
  • ベストアンサー率60% (488/809)
回答No.2

Internal Server Errorが出ているという事は、Apacheのエラーログ、スクリプトログ(出力していれば)あたりに、エラーメッセージが出力されている可能性が高いと思います。 エラーログ、スクリプトログはどうなっていますでしょうか?

apache6
質問者

お礼

パーミッションが正常に777になっていませんでした。 777にすると動作しました。 ご回答ありがとうございます。

apache6
質問者

補足

エラーログは下のようになっていました。 Premature end of script headers: /var/www/cgi-bin/rb.cgi

その他の回答 (2)

  • Ethersky
  • ベストアンサー率71% (168/235)
回答No.3

ヘッダがないからでしょう。 これも吐かせないとだめです。 print <<EOF Content-type: text/plain; charset=EUC-JP あああ EOF となります。

apache6
質問者

お礼

パーミッションが正常に777になっていませんでした。 777にすると動作しました。 ご回答ありがとうございます。

apache6
質問者

補足

Content-type: text/plain; charset=EUC-JPを 追加しても、状況は変わりませんでした。 下記のようなエラーログが残っています。 Premature end of script headers: /var/www/bbs/cgi-bin/rb.cgi

  • edomin
  • ベストアンサー率32% (327/1003)
回答No.1

とりあえず、 ・「#!/usr/bin/ruby」のパスはあっていますか? ・Apacheの設定で、rubyが有効になっていますか? 「ScriptAlias /cgi-bin/ /home/httpd/cgi-bin/」等 もう一度、見直してみて下さい。

apache6
質問者

補足

#!/usr/bin/rubyのパスが合っていなければ、 debian上で./rb.cgiとしたとき、正常に実行できない のではないでしょうか? Apacheの設定で、parl(拡張子:cgi)は有効になってます。 この時点でruby(拡張子:cgi)も有効だと思うのですが。

関連するQ&A