質問: 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. 解説本やネットの情報を組み合わせてやってみたのですが、間違っている箇所がありましたらご教授ください。 よろしくお願いします。
回答: まず、このエラーは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: