アプリ版:「スタンプのみでお礼する」機能のリリースについて

CGIプログラムを書きたくてゼロから勉強をはじめた者です。
プログラムの経験はまったく無いですが、Perlを勉強したいと思っています。使用するのは自宅のMac(OS10.4)です。

1行目に#!/usr/bin/Perlとパスを書き、それをCGI-Executablesフォルダの中に「go.cgi」という名前で保存しました。

次にTerminalにてパーミッション設定。
chmod 755 /Library/WebServer/CGI-Executables/go.cgi
と書きました。

心配なのでケーブルを抜いてからパーソナルWeb共有を開始した後、http://以降localhost/cgi-bin/go.cgi
あるいは127.0.0.1/cgi-bin/go.cgiでブラウザから呼び出してみたのですが、次のようなエラーが表示されてしまいます。

The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, [no address given] and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

解説本やネットの情報を組み合わせてやってみたのですが、間違っている箇所がありましたらご教授ください。
よろしくお願いします。

A 回答 (1件)

まず、このエラーは500番のInternal Server Errorになります。


内部エラーですね。
WebサーバがCGIを動作しようとしたときに、
エラーになってしまいクライアントに情報を返せないときにでるエラーです。

どのようなCGIを動かしているかわかりませんので回答はしかねますが、
以下のようなことを怪しんでみてください。
・perlのスクリプトは正しいか
 #Terminalは使えているようですので、./go.cgiなどとして実行してみてください。エラーが出るようでしたら修正する必要があります。
・パーミッションは正しいか
 設定されているようですけど、Perlの中から違うPerlのスクリプトを呼び出していて、そのスクリプトのパーミッションが正しくないとか
・HTTPヘッダは書かれていますか
 一番先頭に、以下のような文を表示していますか?
 print "Content-Type: text/plain\n\n";
 #私も結構忘れます。。。
 #詳しいことは、参考URL等をお読みください。

お分かりかもしれませんが、
初めてということですので、参考になればということで、
PerlでCGI書く場合は、以下のような手順でやっています。
1.Terminalから実行して文法エラーがないか確認する
2.Webサーバに置いて、パーミッションをいじってから
  ブラウザで確認する

わからない場合は、ネットで検索すれば、かなりの数の情報を得られると思います。

参考URL:http://www.tohoho-web.com/ex/http.htm
    • good
    • 0
この回答へのお礼

回答ありがとうございます!
お礼が遅くなりすみませんでした。

実はプログラムとして書いたのはPerlパス1行だけだったんです。
HTTPヘッダ書いてなかったです・・
忘れていたんじゃなくてそれでいいと思っていたので^^;
もしかして(!)と思ってやってみたら上手くいきました。
それからPerlの手順も参考にさせていただきました。
間違っていなかったので、すごく自信になりました。どうもありがとうございます^^
ただ構文チェックのところでつまづいているので、そのことをMacintoshカテゴリで質問させていただこうかと考えてます。

お礼日時:2009/10/24 14:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!