- ベストアンサー
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(掲示板)は 正常動作しています。 どこが間違っているのでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Internal Server Errorが出ているという事は、Apacheのエラーログ、スクリプトログ(出力していれば)あたりに、エラーメッセージが出力されている可能性が高いと思います。 エラーログ、スクリプトログはどうなっていますでしょうか?
その他の回答 (2)
- Ethersky
- ベストアンサー率71% (168/235)
ヘッダがないからでしょう。 これも吐かせないとだめです。 print <<EOF Content-type: text/plain; charset=EUC-JP あああ EOF となります。
お礼
パーミッションが正常に777になっていませんでした。 777にすると動作しました。 ご回答ありがとうございます。
補足
Content-type: text/plain; charset=EUC-JPを 追加しても、状況は変わりませんでした。 下記のようなエラーログが残っています。 Premature end of script headers: /var/www/bbs/cgi-bin/rb.cgi
- edomin
- ベストアンサー率32% (327/1003)
とりあえず、 ・「#!/usr/bin/ruby」のパスはあっていますか? ・Apacheの設定で、rubyが有効になっていますか? 「ScriptAlias /cgi-bin/ /home/httpd/cgi-bin/」等 もう一度、見直してみて下さい。
補足
#!/usr/bin/rubyのパスが合っていなければ、 debian上で./rb.cgiとしたとき、正常に実行できない のではないでしょうか? Apacheの設定で、parl(拡張子:cgi)は有効になってます。 この時点でruby(拡張子:cgi)も有効だと思うのですが。
お礼
パーミッションが正常に777になっていませんでした。 777にすると動作しました。 ご回答ありがとうございます。
補足
エラーログは下のようになっていました。 Premature end of script headers: /var/www/cgi-bin/rb.cgi