2012-03-26 88 views

回答

3

FTP不太可能「將所有內容放在一條線上」。更有可能的是,該文件使用* nix風格的行結尾,並將文件以二進制模式上傳到Windows機器或類似的東西。

看到,不同的平臺有不同的字符序列來表示「新行」。在Windows中,這通常是CR + LF,但在* nix上,它只是LF。問題在於,很多軟件都假設有關結束文本文件的行應具有的內容,並且如果它看到LF字符,則不會將其視爲換行符。因此,一切看起來都在一條線上。 (我並不認爲PHP對於行結尾是如此肛門,但是我已經看到了其他語言令人不安)。

二進制模式傳輸字節的文件字節,並且不會轉換行尾。如果你下載或上傳圖片或其他東西,這很好。但是,如果您在運行不同操作系統的計算機之間以二進制模式傳輸文本文件,則很可能會看到「不正確」行結尾的結果。

解決方案:對PHP文件使用ASCII模式。大多數FTP客戶端都可以設置使用哪種模式,甚至可以使用某種類型的文件使用哪種模式。由於PHP文件是文本文件,因此在大多數情況下,它們可能應以ASCII模式進行傳輸。

1

解決方案,爲我工作:

  1. 使用Atom.io編輯
  2. 安裝了Atom包line-ending-converter
  3. 開放Atom的文件>標記所有>點擊鼠標右鍵>轉換行結束> UNIX格式
  4. 保存文件並上傳到服務器(如果JS文件,在瀏覽器中打開,看是否換行,現在是正確的)

一些背景信息from here

當下載了與文本/ ASCII模式Windows行結束(CR + LF)的文件時,服務器與CR + LF替換LF,導致不正確的CR + CR + LF。在WinSCP的內部編輯器中打開此文件時,編輯器會將該序列解釋爲兩行結束符(CR和CR + LF),從而在每條內容行之後產生一個空行。保存文件時,內部編輯器會保存兩個Windows行尾CR + LF和CR + LF。在上傳時,他們被轉換爲兩個LF。解決方法是使用外部編輯器並確保WinSCP不強制編輯文件的文本模式。