2012-03-26 6 views
1

私はアップロードしていないファイルをダウンロードすることができますが、キャリッジリターンはそのままですが、アップロードするとファイルは1行に配置されます。FTPでphpファイルをアップロードすると、すべての改行とCRが失われます。

これは、エラーがあったとして、それが困難なこのアプリをトラブルシューティングするために作っているが、すべてがライン上に1

なぜこの出来事はありますか?

+0

FTPツールをバイナリモードに設定してみてください。 – Thilo

答えて

3

FTPが「すべてを1行に入れる」とは考えにくいです。おそらく、ファイルが* nix形式の行末を使用していて、バイナリモードでファイルをWindowsマシンにアップロードしたものなどです。

異なるプラットフォームには、「新しい行」を表すための異なる文字列があります。 Windowsでは、それは最も一般的にはCR + LFですが、* nixでは、それはちょうどLFです。問題は、多くのソフトウェアが、テキストファイルがどの行末にあるべきかを判断し、文字がLFの場合、改行文字として認識しません。だから、すべてが1行にあるように見えます。 (私はPHPが行末についてとても肛門だったとは思っていませんでしたが、他の言語も見ていました)

バイナリモードではバイト単位でファイルバイトを送信し、行末は変換しません。あなたが画像や何かをダウンロードしたりアップロードしたりするのは素晴らしいことです。しかし、異なるOSを実行しているマシン間でバイナリモードでテキストファイルを転送している場合は、「間違った」行末の結果が表示される可能性があります。

解決策:PHPファイルにASCIIモードを使用します。ほとんどのFTPクライアントには、使用するモード、および特定の種類のファイルに使用するモードの設定があります。 PHPファイルはテキストなので、ほとんどの場合ASCIIモードで転送されるはずです。私のために働いた

1

ソリューション:

  1. 使用Atom.ioエディタ
  2. Atomのパッケージline-ending-converter
  3. オープンアトムでファイル>すべて>マウスの右クリックをマーク>>に行末変換をインストールします。 Unixのフォーマット
  4. 保存ファイルとサーバーにアップロード
(ブラウザで開いてJSファイルは、参照する場合は改行は今正しい場合)

いくつかの背景情報from here

テキスト/ ASCIIモードでは、Windowsの行末(CR + LF)を使用してファイルをダウンロードし、サーバーが不正なCR + CRが得られ、CR + LFとLFを置き換えます+ LF。 WinSCPの内部エディタでこのようなファイルを開くと、エディタはシーケンスを2つの行末(CRおよびCR + LF)として解釈し、各行およびすべてのコンテンツ行の後に空白行を表示します。ファイルが保存されると、内部エディタは2つのWindows行末CR + LFとCR + LFを保存します。アップロード時に2つのLFに変換されます。回避策は、外部エディタを使用して、WinSCPが編集済みファイルに対してテキストモードを強制しないようにすることです。

関連する問題