2014-01-29 32 views
19

我正在使用Vagrant管理Debian Wheezy的VirtualBox實例,PHP 5.5和nginx 1.4.4。我的本地環境是使用PHP 5.5和Apache 2.2.24的Mac OS X 10.9。我有一個同步目錄指向我的文檔根目錄這個特定的項目。我將一行文本添加到我的CSS文件,垃圾通過瀏覽器來訪問

我的本地機器有一個VirtualHost設置,它也指向這個項目的文檔根目錄。因此,我實際上有兩個不同的URL,我可以指向我的瀏覽器,並執行相同的代碼。一個URL訪問虛擬機,另一個URL訪問我的本地Apache安裝。

我已經能夠編輯幾個沒有問題的PHP文件。我在本地進行更改,並立即顯示在虛擬機和本地Web服務器上。但是,每當我嘗試編輯CSS時,事情就會變得怪異。我正在嘗試將一行CSS添加到靜態CSS文件中。沿線的東西:

.body {margin-top:50px} 

當我做這個改變,虛擬機發生了瘋狂。我不確定它是否發送了損壞的文件,或者它只是在CSS文件的末尾添加了一些奇怪的字符,但我甚至無法在這裏粘貼它們。我做的CSS文件的請求的查爾斯轉儲和響應如下所示:

enter image description here

我在vim通過虛擬機看了看文件。我已經使用多個文本編輯器查看了該文件。對於我的生活,我找不到任何問題。當我打開過我的本地Apache安裝完全相同的文件,它工作得很好:

enter image description here

注意,body聲明出現buttonfooter之間,並在文件到底有沒有奇怪的字符。

我注意到的另一件事是我的空白在某些時候也被操縱了。所討論的CSS文件使用四個空格進行縮進,但在來自虛擬機的響應中,這些行只有兩個縮進空格。你不能從照片中看到它,因爲它們是由Charles格式化的,但我查看了原始數據。這真是奇怪。

當通過Vagrant/nginx組合對我的本地/ Apache組合服務時,您是否有任何想法導致我的CSS文件被操縱?

編輯

我粘貼的某些字符爲十六進制轉換器,它轉換所有字符爲問號。我嘗試了一個二進制到十進制的轉換,他們都變成了�,我發現它是「用來替換unicode中未知或不可表示的字符」。我在文件上運行file --mime,它返回rental-application.js: text/plain; charset=us-ascii。所以... nginx設置可能?

我與JavaScript文件有完全相同的問題。如果我vagrant destroyvagrant up是我發現迄今爲止解決此問題的唯一方法。當我必須在文件保存之間重新啓動我的虛擬機時,它無法快速排除故障。

我用來查看文件的每種方法都有效。唯一的問題是當它通過nginx服務,這讓我覺得我有一些類型的編碼設置錯誤。這主要是股票設置。

更離奇

如果我mv rental-application.js rental-application.html,在我的瀏覽器中加載頁面時,它遇到完美。如果我將名稱更改爲rental-application.php,同樣適用。但是,只要將名稱更改爲rental-application.jsrental-application.css,我的更改就會消失,並且�字符會重新出現在文檔的末尾。

更離奇

我可以創建虛擬機一個js文件,它會通過VM的nginx服務器加載的罰款。如果隨後修改了我剛創建並重新加載的文件,則不會顯示這些更改,只是垃圾字符。

如果我將mv該文件轉換爲以.js結尾的其他名稱,則垃圾字符問題仍然存在。但是,如果我將cat重命名文件的內容重新命名爲具有原始名稱的新文件,那麼在Universe中一切都很好。

+0

ID檢查什麼他們字節在十六進制編輯器,但我認爲它可能是一個編碼問題或文件在以二進制形式發送的傳輸中發生損壞,而不是ASCII甚至是緩存問題。奇怪的是'body {}'被刪除了 –

+0

這真的很奇怪。我銷燬並重建了虛擬機,並且CSS文件顯示正常。然後我再次編輯它,現在我有同樣的問題。 –

+0

輝煌的問題寫下來,並徹底調查。做得好。 – Alex

回答

41

就這樣,如果人們最終在這裏遇到同樣的問題,他們就可以解決這個問題:您需要在您的Web服務器設置中關閉sendfile()

對於Apache:EnableSendfile off

對於Nginx的:sendfile off

快速的解釋:https://coderwall.com/p/ztskha

你可以找到更多的在線如果你需要更多的細節。

現在,你可以得到一個啤酒和享受您的靜態文件被正確傳送,更不會損壞的文件:)

+0

這樣做了,謝謝:) –

+0

令人驚歎。謝謝! –

+0

這爲我工作,雖然我不得不在編輯工作之前'流浪'重新加載'。謝謝! – tmthyjames

相關問題