- 締切済み
CGI プログラムエラーの解決法を教えてください。
CGIの勉強をしている初心者です。 CGI プログラムを起動させると、 Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request.・・・・・ となってしまい、CGIがブラウザに表示されません。 どなたか解決法をご存知の方、教えてください。 (使用PCは、MacOSX(10.6.8)です。) 行った手順 1. Apacheの動作確認 [Machintosh HD]→[アプリケーション]→[システム環境設定] → 共有・アイコン → 「Web 共有」にチェックを入れる。 2. test.cgiを設置 設置場所 [Machintosh HD]→[ライブラリ]→[WebServer] → 「CGI-Executables」にtest.cgiを設置 test.cgiは下記 #!/usr/bin/perl print "Content-type: text/html\n\n"; print "<HTML>\n"; print "<HEAD><TITLE>CGI TEST</TITLE></HEAD>\n"; print "<BODY>ちわ!世界。</BODY>\n"; print "</HTML>\n"; __END__ 3.ターミナルでCGIプログラムに実行権をつける chmod 755 /Library/Webserver/CGI-Executables/test.cgi 4.ブラウザに「http://localhost/cgi-bin/test.cgi」を入力 最初に表示した「Internal Server Error」になってしまう。 ちなみに・・・ 1. ファイルに実行権限が付いているか確認したところ、下記のようになりました。 ls -la /Library/WebServer/CGI-Executables/test.cgi -rwxr-xr-x@ 1 taka staff 188 2. Syntaxを確認したところ、下記のようになりました。 perl -c /Library/Webserver/CGI-Executables/test.cgi /Library/Webserver/CGI-Executables/test.cgi syntax OK 3. ターミナルにて、which perlを確認したところ、下記のようにまりました。 /usr/bin/perl 4. tail -f /private/var/log/apache2/error_logにてApacheのエラーログを確認をしたところ、下記のようになりました。 [Thu Sep 22 22:31:17 2011] [error] [client 127.0.0.1] (8)Exec format error: exec of '/Library/WebServer/CGI-Executables/test.cgi' failed [Thu Sep 22 22:31:17 2011] [error] [client 127.0.0.1] Premature end of script headers: test.cgi エラーログの見方、解決法もわからない初心者です。 どなたか解決法をご存知のかた、教えてください。 どうぞよろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- ORUKA1951
- ベストアンサー率45% (5062/11036)
とりあえず、プログラムの置いてある場所に移動して $perl test.cgi を実行して見る。 スクリプトを次のように書き換える。 #!/usr/bin/perl print qq^Content-type: text/html <HTML> <HEAD><TITLE>CGI TEST</TITLE></HEAD> <BODY>ちわ!世界。</BODY> </HTML>^; __END__
- notnot
- ベストアンサー率47% (4900/10358)
>テキストエディットで作成しているのですが、 Macユーザでないので、テキストエディットの使い方はわかりません。 保存の設定で、改行コードを指定するところはありませんか? 改行コードがLFであってるとすると、#!/usr/bin/perl のあとに目に見えないゴミ文字が入っているか。 あと可能性としては、/usr/bin/perl がそもそも存在しないか。
- notnot
- ベストアンサー率47% (4900/10358)
>Exec format error 改行コードが間違ってます。<LF> にすべきところが、<CR><LF> とかになっていると思われる。 #!/usr/bin/perl<CR><LF> で、/usr/bin/perl でなく、/usr/bin/perl<CR> を実行しようとして、そんなファイルないのでエラー
補足
回答ありがとうございます。 テキストエディットで作成しているのですが、 /usr/bin/perl の横に <LF> を入力すればいいのでしょうか?