PostHeaderIcon さくらスタンダードでRubyのCGIを動かすための注意

こんな感じのコードをCGIとしてサーバー上で動かしたいとします。


# test.rb

#!/usr/local/bin/ruby
#
# -*- encoding: utf-8 -*-
#
print "Content-Type: text/plain\n\n"
print "テスト"

  私はさくらサーバーのスタンダードを使っているのですが、 このサーバーは初期設定でRubyが使えるのですね。   サーバーコントロールの「サーバー情報」から確認できます。 Ruby のバージョンと実行パスは次の通りでした。

Ruby 1.8.7 /usr/local/bin/ruby

これならCGIから使うのは簡単だと思い、上記のコードを置いて実行してみたのですが、早速トラブルが。   次のいずれかの状況になった場合は、私と同じですので、解決策を残しておきます。


問題1: Rubyが実行されずにソースコードテキストが表示される。

問題2: Internal Server Error

1. の場合は、解決策1, 解決策2 あたりを、 2. の場合は、解決策3 あたりを試してみてください。私の環境ではこれで解決しました。


解決策1: ファイルパーミッションは「755」または「705」

Rubyファイルがapacheから実行可能になっていなければなりません。

参考: http://support.sakura.ad.jp/manual/rs/tech_cgi.html


解決策2: .htaccess に下記を追加 (.rb を CGI で使用可能にする)


AddHandler cgi-script .rb

  参考: http://morio-dev.seesaa.net/article/134038083.html


解決策3: 改行コードを CR+LF から LF に変更する

サーバー上のVIM で開いたときに ^M がついていたら、このケースです。
Windows上で作成されたファイルのため、改行コードが CR+LF になっているのです。 Linux用の改行コードである LF に変更しましょう。
(私は秀丸エディタを使っているのですが、このエディタではWindows上で改行コードを LF に変えられます。)

参考: http://help.sakura.ne.jp/forumup/a/2008/01/99.html

実は問題3として次のような問題が起きているのですが、いまだ解決せず。。。

問題3: 文字化ける


print "テスト"

の部分が文字化けて表示されます。   次のサイトが参考になりそうなのですが。

参考: http://morio-dev.seesaa.net/article/134038083.html

さくらサーバーは EUC がデフォルトとのことですが、UTF-8はだめなのかしら。いやそんなことは・・・


追記: 文字化けの件ですが、なんのことはない。 下記を付け忘れただけでした。 (前回、あれだけ偉そうに語っておいて・・・)

print "Content-Type: text/plain; charset=utf-8\n\n"

Leave a Reply