2013-10-07 85 views
0

當我上傳一些PHP文件時,我收到了奇怪的問題,一些php文件有cr + lf EOL字符,一些有CR,一些有LF。
我使用Win8,Filezilla,Notepad ++和PHPRunner進行一些模板化工作(全部存儲在同步文件夾中)。我在使用手工製作的php文件時,有時會使用PHPRunner來傳輸ftp文件,有時使用Filezilla。php與cr和lf不匹配

當我在記事本++中打開文件時,似乎有時候這些行結束會自行更改,我需要去記事本++ - >編輯 - EOL轉換才能將它們更改回爲unix樣式。因此,這通常不會打擾我(除了它有點奇怪,他們如何隨機更改),但在PHP中,似乎如果REQUIRE_ONCE文件具有不同的行尾,它只會失敗,沒有任何作用。 所以我的問題是

1)這是PHP的預期行爲,如果是這樣的話有什麼辦法讓它接受不同的EOL編碼在同一個源文件?

2)任何想法爲什麼我的EOL字符可能會被改變?是Filezilla,記事本+ +或Dropbox或PHPRunner是修補? (當我有文件打開我從來沒有看到他們的通知改變,只是發生在重新啓動計算機)

這是一個有點困惑所以認爲我會問,如果其他人可能都遇到過這樣

+1

你應該顯示你已經嘗試過? – Salim

+0

所以它看起來像PHP不喜歡僅CR的EOL。將其更改爲CR + LF或僅LF修復它,PHP運行正常。我只是不能爲我的生活弄清楚爲什麼我的行結尾仍然只是交換到CR。我的猜測是,它是記事本++在打開文件時執行它,但檢查我有unix設置的選項,並不能實際捕獲這種變化發生。 – sradforth

回答

0

任何應用程序的數量喜歡改變行尾;它在許多情況下被認爲是有用的行爲。在跨系統傳輸時,Ftp程序(等)可以選擇轉換文本文件。 FTP的「ascii」模式(通常是文本文件的默認模式)啓用自動轉換。如果最終上傳一些帶有轉換的文件而另一些沒有,則最終會收集到不一致的集合。

Notepad ++也可能會這樣做;我不使用它,所以我不能說。最糟糕的情況是,只會爲您觸摸的行添加他們的首選行結尾,這會導致文件的結尾不一致。聽起來就像你至少倖免於此。

簡而言之:檢查觸及您的文件的每個工具的設置,從Notepad ++開始。