「これはヤバかったな」という遅刻エピソード

Macのテキストエディットを使用しています。

(使用PCは、MacOSX(10.6.8)です。)

改行コードをCRLFやLFではなく、CRだけにしたいと考えています。

変更法をご存知の方、教えてください。

初心者の為、どうぞよろしくお願いいたします。

A 回答 (2件)

http://oshiete.goo.ne.jp/qa/7030066.html こちらのつづきでしょうか。
それならば、CRにするのは解決にはなりません。
おそらく、最近の事情を知らずに「Macではテキストの改行はCR」だと思っているのでしょう。

たしかにOS9まではCRを使っていましたが、OSXではUnixがベースになっており、改行もUnixと同じLFを使っています。
Web共有で使われれうApacheも、CGIを実行するのに使うperlも、LFを改行とみなします。

実際、手許で実験したところ、
CRLF,CR→Internal Error 500
LF → 「ちわ!世界。」と表示
でした。

原因は他にも考えられます。

> perl -c /Library/Webserver/CGI-Executables/test.cgi

文法が正しくてもプログラムとして間違っている、ということはよくあることです。
-cをはずして実行したら、ちゃんとターミナル上に表示されるでしょうか?

CGIでは、その実行ファイルを単体で実行しようとします。perlを探すのは、シェルの役目です。つまり、シェルからコマンドとして実行できる必要があります。ターミナルで
/Library/Webserver/CGI-Executables/test.cgi
とだけ入力したらどうなるでしょうか?
    • good
    • 0

テキストエディット.appには無いようです。


CRに対応したソフト(mi等)を使うのが確実だと思います。


ところで、なぜCRなのでしょう?

この回答への補足

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

長文になりますが、ご指導よろしくお願いいたします。


なぜCRかと申しますと、下記のような質問をしたところ、

返答が、

「エラーの内容はhttpのレスポンスヘッダより前に何かが出力されてしまったため発生しています。
大抵は先頭行の改行コードが問題を引き起こしていますので、環境がMACなら改行コードをCRLFやLFではなく、CRだけにしてください。」

だった為です。




質問内容


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

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

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

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

補足日時:2011/09/24 09:08
    • good
    • 0

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


おすすめ情報