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
とだけ表示されます。

なんだか一番最初の所でつまづいてしまい、
めげそうになっております。
よろしくご教授ください。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2012/03/05 08:44:14
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:cx20 No.2

回答回数607ベストアンサー獲得回数108

ポイント80pt
print "Content-Type: text/html¥n¥n"

もしかして「¥n¥n」が UNICODE 文字だったりしませんか?
(たまにサンプルコードで、表示がバックスラッシュになることを避ける為に、UNICODE 文字が使われているケースがあります。)

試しにターミナルで、

$ ./test.cgi

を実行して意図した改行になっているか確認してみてください。
「¥n¥n」の文字が表示されるようであれば UNICODE 文字の可能性があります。
その場合は、再度「\n\n」を入力し直してみてください。

その他の回答1件)

id:oil999 No.1

回答回数1728ベストアンサー獲得回数320

ポイント20pt

スクリプトのパーミッションを 755 にしてみてください。
Apacheのセキュリティ設定の関係で、777 は実行されない場合があります。

id:weed_7777

そんなことがあるんですか・・・アドバイス有難うございます。
パーミッションを755にしてやってみたのですが、
結果は変わらず、エラーメッセージも同じでした。
むーん、どうしてなんでしょう。

2012/03/04 23:23:19
id:oil999

スクリプトファイルをBOM付きUTF-8で保存していませんか?
BOM無しUTF-8で保存してください。

2012/03/05 07:17:12
id:cx20 No.2

回答回数607ベストアンサー獲得回数108ここでベストアンサー

ポイント80pt
print "Content-Type: text/html¥n¥n"

もしかして「¥n¥n」が UNICODE 文字だったりしませんか?
(たまにサンプルコードで、表示がバックスラッシュになることを避ける為に、UNICODE 文字が使われているケースがあります。)

試しにターミナルで、

$ ./test.cgi

を実行して意図した改行になっているか確認してみてください。
「¥n¥n」の文字が表示されるようであれば UNICODE 文字の可能性があります。
その場合は、再度「\n\n」を入力し直してみてください。

  • id:cx20
    > print "Content-Type: text/html¥n¥n"

    もしかして「¥n¥n」が UNICODE 文字だったりしませんか?

    試しにターミナルで、
    $ ./test.cgi
    を実行して意図した改行になっているか確認してみてください。
    「¥n¥n」の文字が表示されるようであれば再度「\n\n」を入力し直してみてください。
  • id:weed_7777
    行きました!
    EUC-JPに変えたらうまく表示できました。
    ありがとうございます!
    なんだかコメントでアドバイスいただいてしまってすいません。
    もし気が向きましたら回答の方にもコメントいただければ
    そのままベストアンサーとさせていただきたいと思います。
    本当にありがとうございました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません