2008年08月20日

改行2つ

久しぶりに、Linuxに取り組んでみて思いがけない苦労をしている。
windows版apacheは容易にインストールと利用が出来るのだが、Linuxでの設定には一苦労。まず、パミッションについて嫌というほど思い知らされ、さらにセキュリティが厳しくてあちこちでSELinuxが制限をかける。さらに苦労しているのが、CGIだ。
どうにか動くようになったCGIもあるのだが、内容をコピーして全く同じ記述にしたはずのCGIが動かなかったりする。(Internal Server Error)

Fedora9では有無をいわさず、文字コードがUTF-8になっているのも苦労のタネである。windows機で編集をして、windows版apacheに送っていたときは楽だったが、今度は変換をするか、Linux機で編集をしなければならない。

今日は変換をしたはずなのに、エラーが出たケースの対応のメモ。
------------------------------
#!/usr/bin/perl

print "Content-type: text/html\n";
print "\n";
print "<html>\n";
print "<head>\n";
print "<title>テスト</title>\n";
print "</head>\n";
print "<body bgcolor=\"#ffcccc\">\n";
print "これはCGIのテストです。\n";
print "</body>\n";
print "</html>\n";
------------------------------
(注・上のコードをそのままコピーしても駄目です。<と>を全て1バイトの<・>に書き換えてください。)

というものを文字コード変換してテストしたのだが、うまく動かない。改行コードが変なのかなと改行部分をいじくりまわしたり、パミッションを変更する(GUIだと、ファイルのプロパティで見ても分かりにくいが、□実行ファイル というところにチェックを入れる。)などしているうちに、動いたり動かなかったり・・・。

すこしずつ追いつめていったところ、何と3行目の
print "\n";
を削除するとエラーになってしまうことが分かった。まさかと思ったが、
「ヘッダの後には改行が2つ必要」ということがあちこちに書かれていた。
従って上のように書くか、
print "Content-type: text/html\n\n";
としないと駄目だと分かった次第です。

ちなみに改行は、本当はLF(16進0a)だけなのですが、windowsのようにCR+LF(16進0d0a)でも支障はないようです。どうせ変換するついでに、CRはとっちゃえば無難です。
それから、UTF-8にするときには、BOMという情報を取り去らないといけないようです。fedoraのテキストエディターでは、なぜかこれを取る/取らないを選択できないので、うまく行かない時があるのかも知れません。
【手探りのFedoraの最新記事】
posted by kewpie at 22:49| Comment(0) | TrackBack(0) | 手探りのFedora
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/18200810
※ブログオーナーが承認したトラックバックのみ表示されます。
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック
コメントの投稿について
○お名前とコメント欄の記入は必須です。
○メールアドレスは任意です。記入されても公開はされません。管理人のみに知らされます。
○スパム防止のため、
・ホームページアドレス欄への記入はできません。
・コメント欄にURLは記入できません。
・スパムと思われる語を記入できません。
 これらをしようとすると、最終的に投稿完了できません。
○投稿完了後に、管理人の判断でスパムと判断した投稿は削除させていただきます。