2011-04-18 34 views
1

我有一個PHP文件爲我的網站,index.php,它,因爲它站在服務器上,它工作正常,沒有錯誤觸發和頁面加載,因爲它應該。查看在Windows中保存相同的文件時PHP解析器錯誤

服務器是運行Apache的Linux服務器,而我的本地計算機是Windows計算機。使用FileZilla Windows客戶端,我下載index.php並在Windows中的Notepad ++中打開文件。我將此文件保存在Windows中,然後上載並覆蓋服務器上的文件。此時,頁面沒有加載,這個錯誤在頁面上:

Parse error: syntax error, unexpected $end in /path/to/my/site/index.php on line 1

我GOOGLE了這個錯誤相當多,並且所有的答案我已經遇到的細節,它要麼是PHP短標記問題(替換<?<?php,但該文件不包含任何短標記)或文件中某處的一個雜散括號(但我已檢查並且所有括號正確匹配)。除此之外,我並沒有觸及源代碼本身,只是在打開它後保存文件,因爲它在本地Windows保存之前運行,但不是在本地Windows保存之後運行,所以我不得不相信這是Windows和Unix之間的結束問題。

什麼是更令人費解的是,我能創造一個test.php,只是叫phpinfo(),並在Windows保存並上傳的,當我把它從我的網頁瀏覽器中的網頁加載正確。問題必須與Notepad ++如何將基於Unix或基於Mac的行尾文件轉換爲非Windows創建的文件到Windows行尾文件相關聯,並且以某種方式被破壞。

任何想法?如果我省略了任何內容,我會盡力提供更多信息,但我真的不認爲這裏需要該來源。

+1

用盡可能簡單的源文件重現問題。一旦你做完了,仍然看不出有什麼問題,請在十六進制編輯器中查看該文件以查看究竟發生了什麼。您似乎與自己相矛盾,因爲您認爲它與Notepad ++有關,但同時聲稱該文件未經修改。如果你已經*用Notepad ++修改了它,首先想到的是在文件開頭的一個隱藏的unicode水印(你一定會用十六進制編輯器看到)。祝你好運! – gamen 2011-04-18 14:41:51

+0

@ gamen感謝你的迴應,當我想到同樣的事情時,它就像是unicode水印這樣的隱藏字符,我檢查了一下,沒有發現這種情況。記事本++正確地保存文件,問題是Filezilla如何傳輸文件(如ASCII而不是二進制)。謝謝您的幫助! – Mattygabe 2011-04-18 14:47:17

回答

1

嘗試在您的filezilla客戶端中將傳輸類型設置爲BINARY而不是TEXT。這可能是傳輸編碼而不是記事本++的問題,因爲我之前遇到類似的問題,通過強制傳輸到二進制文件解決了這個問題。

+0

這就是問題所在! FileZilla被設置爲「Auto」,因此在傳輸文件時,它一定是選擇了「ASCII」而不是「Binary」,這就是文件被破壞的地方。太棒了! – Mattygabe 2011-04-18 14:45:22