2012-10-08 37 views
32

dışında kaydedildiğinde düzgün şekilde kodlanmamışsa, OSX, Ubuntu ve Windows 7 üzerinde vagrant çalıştırıyorum ve ana makinede IDE'ler olarak vim ve Netbeans kullanıyorum. VM, CentOS 6.3 ve Apache 2.2 kullanıyor. Docroot, /vagrant olarak ayarlanmıştır.JS ve CSS dosyaları, VM

Bir JS veya CSS dosyasını düzenlediğimde ve kaydettiğimde, tarayıcı dönüyor ve yasa dışı karakterler algılıyor. Dosyayı tarayıcıda görüntülediğimde, genellikle bir kodlama sorununu işaret eden elmas soru işareti karakterini görüyorum. VM içindeki dosyayı vimden açabilirim ve :w ++enc=utf-8 ile kaydedebilirim ve dosya normal olarak yüklenir.

Ana makinede ve farklı ana işletim sistemlerinde birden çok IDE'yi denedim ve yalnızca vagrant ve takılı dizini kullanarak bir şeyleri belirtebilirim. Dosyalarımı yerel olarak çalıştırabildiğim ve çalıştıkları veya uzaktaki bir makineye kaydettikleri ve dosyalar çalıştığı için IDE'lerim sorun değil. Sadece onları /vagrant'a monte edilene kaydettiğimde bir sorunum var.

Bu Apache'yi veya işletim sisteminde çalışmak için bunu değiştirmem gereken başka bir şey var mı?

+0

Apache yanıt başlıklarını gönderin –

+0

Aynı durum ancak web sunucusu olarak nginx ile ve aynı sorunu alıyorum, bu yüzden onun nginx ile ilgili olduğunu düşünmüyorum, "dos2unix" benim için de çalıştı – amd

+0

Olası kopyası [Vagrant/VirtualBox/Apache2 Garip Önbellek Davranışı] (http://stackoverflow.com/questions/9479117/vagrant-virtualbox-apache2-strange-cache-behaviour) – kenorb

cevap

49

Bu sabah bu problemi yaşadım. EnableSendfile öğesini httpd.conf dosyanızda kapalı olarak ayarlayın.

httpd.conf dosyasına bakarsanız, "NFS'ye bağlı dosya sistemlerinden sunuluyorsanız bunu kapatın." http://httpd.apache.org/docs/2.2/mod/core.html#enablesendfile'da "Varsayılan olarak, bir isteğin işlenmesi bir dosya içindeki verilere erişim gerektirmediğinde - örneğin, statik bir dosya gönderilirken - Apache, dosya içeriğini hiç okumadan dosya içeriğini teslim etmek için sendfile kullanıyorsa OS bunu destekliyor. "

Windows ana bilgisayarınızda bir ntfs dosya sistemi bulunduğundan, linux kullanıcısı dosyayı dosya yolu ile düzgün şekilde önbelleğe almaz ve bu nedenle apache'nin dosyayı göndermesi gerekir. Bu, apache'den dosya talep ederken marjinal bir yavaşlamaya neden olabilir, ancak ihmal edilebilir.

+7

Nginx'te OS X ile ana bilgisayardaki aynı sorun. Yine, nginx.conf dosyasında 'sendfile kapalı 'ayarlandı. – watermanio

+1

benim için de çalıştı! Emin olmakla birlikte, vagrant kullanıyorsanız, 'vagrant reload' iseniz, 'nginx.conf' dosyasındaki değişikliklerin güncelleneceğini unutmayın. – tmthyjames

+0

@John_McCombs bugün benim için benim ilacımsın :). Benim durumumda/etc/apache2/apache2 idi.conf ' – sobi3ch

5

Kullandığınız sunucuya bağlıdır.

Nginx için: /etc/nginx/nginx.conf yılında:

değişim hattına sendfile off; için sendfile on; içerir.

Apache için: /etc/httpd/conf/httpd.conf yılında:

değişim kaldır comment

EnableSendfile off; için Ve restart senin Nginx veya Apache unutma yoktur. Hala çalışmıyorsa, exit ve vagrant reload veya bunun gibi bir şey - VM'nizi yeniden başlatın.