サーバ移行作業中
ただいませっせと,自宅サーバから共用サーバへの移行作業をやっているのですが,不思議な現象がちらほら・・・
まず,自宅サーバ上では動いていたcgiのうち,時々動かないものがある・・・
エラーとしては,#!ではじまるperlのパスがおかしいよ・・と表示されるのですが,これは合っている・・というか,同じ表記で動くものもある・・
原因は,改行コードでした。
unix系の改行コードはLF,dos+windowsはCR+LF
FTPのアスキーモードでの転送は,この辺を処理した上で行っているはずなのですが,うまく動かないものもあるようで,インタープリタがパスの表記ではなく,コマンドの呼び出しと解釈してしまい,エラーが出る,ということのようです・・・
それなりのエディタを使用しないと,改行コードの違いはわかりません・・・
(ローカルのファイルの大きさと違うものがあることに気づいて,やっと,ああそうだった,と思い出しました・・・)
参考 http://www.rescue.ne.jp/cgi/crlf/
次は,cgiのはき出すhtmlコードの中で,時々,ファイル名やフォルダ名が大文字になるものがあること。
これは未だに原因不明
どうしてCGIも動いて,フォルダ構成も同じく揃えているのに,ファイルへのリンクが切れるのか,とはき出されたソースを表示していたら,フォルダ名:IMG ファイル拡張子:JPGが大文字ではき出されている。でも,すべてがそうではない・・・
原因追及は,現時点では放棄して,IMGとimgの両方のフォルダを作成しました。
一方,*.JPGは,今のところ,お手上げです・・・ (ブログ版の日記が,この症状です・・)
もっとも,dos系のファイルシステムは,大文字小文字を区別しないので,もしかしたら,今までもそうだった可能性は残っています・・
しかし,いろいろと楽しませてくれるなぁ・・
(雑学)
最初に作ったお仕事用のプログラムは,レセプトにデータを印刷するための,ドッドプリンタ制御用のプログラムでした。
で,CRはキャリッジリターン,LFはラインフィードの意味で,つまりCRでプリンタのヘッドを行頭に戻し,LFで紙を1行送る,という動作を表します。
つまり,改行とは,ヘッドを行頭に移動し,さらに次の行に移動する動作のことです。
出力先がプリンタでもディスプレイでも動作は同じなので(現実の動作は,デバイス側が処理すればよい),DOS系の方が,忠実ではあると思います。まあ,Z80のアセンブラ並みに古めかしい雑学ではありますが・・)



