Apache2.0.55をWindowXPに入れてActiveScriptRuby1.8.4.2をCGIとして使おうと思ったら動かない。
Premature end of script headers
とかエラーが出てる。ヘッダ(#!の部分)がおかしいとき以外にも出るエラーのようだけど、とりあえずはそのままヘッダ間違ってるのかと疑って
#! C:\ruby\bin\ruby
と書いていたのを
#! C:/ruby/bin/ruby
にしたり
#! /ruby/bin/ruby
にしたりしたけど駄目。Windows環境なので改行コードはCRLFで良い筈だけど、誤認されることもあるようなので、CRLF・LFの両方試したけれど駄目。
#! C:\ruby\bin\ruby --
これで直るとの情報もあったけど駄目。面倒だったのでcgi-binディレクトリに配置してたけれど、それが駄目?とか思って
<Directory "C:/foo"> Options +ExecCGI </Directory> AddHandler cgi-script .cgi
な設定を別ディレクトリでやってみても駄目。ヘッダを「ruby.exe」とフルネームにしても駄目。Apacheの設定が悪いのか、rubyが悪いのか判らなかったので、
#! C:\perl\bin\perl
で試すとこれも同じく動かない。httpd.confは間違えてないと思うけど、Perlが動かないとなるとかなり怪しい。残る可能性はパーミッションかな。でもWindowsのGUIでパーミッションを設定するのは限界があるので、パーミッション変更ツールでも作るか。ってWindowsにはchmodな発想はないか。読み取り専用とかはあるけど。
#!/ruby/bin/ruby -Ks
print ”Content-type: text/html¥n¥n”
動いた!!!
そーゆーことなのですね。いつもApacheのモジュールとして動かすもんでCGIな知識がなく困ってました。どなたか判りませんがありがとうございます。