2012-10-08 70 views
32

Estoy ejecutando vagabundo en OSX, Ubuntu y Windows 7 y usando vim y Netbeans como IDE en la máquina host. La máquina virtual ejecuta CentOS 6.3 y Apache 2.2. El docroot se establece en /vagrant.Archivos JS y CSS en vagabundo no codificados correctamente cuando se guardan fuera de la VM

Cuando edito un archivo JS o CSS y lo guardo, el navegador da la vuelta y detecta caracteres ilegales. Cuando veo el archivo en el navegador, veo el carácter de interrogación de diamante que generalmente apunta a un problema de codificación. Puedo abrir el archivo en vim dentro de la VM y guardarlo con :w ++enc=utf-8 y el archivo se cargará normalmente.

He intentado varios IDEs en el equipo host y diferentes sistemas operativos host, y solo puedo identificarlo con algo relacionado con vagabundo y el directorio montado. Mis IDEs no son el problema ya que puedo ejecutar los archivos localmente y funcionan, o guardarlos en una máquina remota y los archivos funcionan. Solo cuando los guardo en lo que se monta en /vagrant tengo un problema.

¿Apache u otra cosa en el SO que necesito cambiar para que funcione?

+0

Publica tus encabezados de respuesta apache –

+0

Mismo caso pero con 'nginx' como servidor web y obteniendo el mismo problema, así que no creo que esté relacionado con nginx,' dos2unix' también funcionó para mí – amd

+0

Posible duplicado de [Vagrant/VirtualBox/Apache2 Strange Cache Behavior] (http://stackoverflow.com/questions/9479117/vagrant-virtualbox-apache2-strange-cache-behaviour) – kenorb

Respuesta

49

Tuve este problema esta mañana. Establezca EnableSendfile en off en su httpd.conf.

Si mira su httpd.conf dice "desactívelo si sirve desde sistemas de archivos montados en NFS". En http://httpd.apache.org/docs/2.2/mod/core.html#enablesendfile explica que "de forma predeterminada, cuando el manejo de una solicitud no requiere acceso a los datos dentro de un archivo, por ejemplo, al entregar un archivo estático, Apache usa sendfile para entregar el contenido del archivo sin leer el archivo si el sistema operativo lo admite ".

Como su host de Windows tiene un sistema de archivos ntfs, el invitado de Linux no almacena correctamente el archivo en caché con sendfile, por lo que apache debe enviar el archivo. Esto puede causar una desaceleración marginal al solicitar archivos de apache, pero debe ser insignificante.

+7

Mismo problema en Nginx con OS X como host. Una vez más, establecer 'sendfile off;' en nginx.conf solucionó esto. – watermanio

+1

funcionó para mí también! aunque asegúrate, si estás usando vagabundo, de que 'vagabundo recarga 'para que los cambios en el archivo' nginx.conf' se actualicen. – tmthyjames

+0

@John_McCombs eres mi dios por hoy :). En mi caso, era '/ etc/apache2/apache2.conf' – sobi3ch

5

Depende del servidor que esté utilizando.

Para Nginx: en /etc/nginx/nginx.conf:

cambio de la línea que contiene sendfile on;-sendfile off;.

Para Apache: en /etc/httpd/conf/httpd.conf:

cambio quite comentario para EnableSendfile off;

Y no olvidemosrestart su Nginx o Apache. Si todavía no funciona, exit y vagrant reload o algo así - reinicie su máquina virtual.

Cuestiones relacionadas