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

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

エラーログの見方、解決法もわからない初心者です。

どなたか解決法をご存知のかた、教えてください。

どうぞよろしくお願いいたします。

A 回答 (3件)

とりあえず、プログラムの置いてある場所に移動して


$perl test.cgi
を実行して見る。

スクリプトを次のように書き換える。
#!/usr/bin/perl
print qq^Content-type: text/html

<HTML>
<HEAD><TITLE>CGI TEST</TITLE></HEAD>
<BODY>ちわ!世界。</BODY>
</HTML>^;
__END__
    • good
    • 0

>テキストエディットで作成しているのですが、



Macユーザでないので、テキストエディットの使い方はわかりません。
保存の設定で、改行コードを指定するところはありませんか?

改行コードがLFであってるとすると、#!/usr/bin/perl のあとに目に見えないゴミ文字が入っているか。
あと可能性としては、/usr/bin/perl がそもそも存在しないか。
    • good
    • 0

>Exec format error



改行コードが間違ってます。<LF> にすべきところが、<CR><LF> とかになっていると思われる。
#!/usr/bin/perl<CR><LF>
で、/usr/bin/perl でなく、/usr/bin/perl<CR> を実行しようとして、そんなファイルないのでエラー

この回答への補足

回答ありがとうございます。

テキストエディットで作成しているのですが、

/usr/bin/perl

の横に

<LF>

を入力すればいいのでしょうか?

補足日時:2011/09/23 22:28
    • good
    • 0

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