在VM外部保存时,vagrant中的JS和CSS文件未正确编码

dra*_*ank 32 apache centos character-encoding vagrant

我在OSX,Ubuntu和Windows 7上运行流浪汉,并在主机上使用vim和Netbeans作为IDE.VM正在运行CentOS 6.3和Apache 2.2.docroot设置为/vagrant.

当我编辑JS或CSS文件并保存它时,浏览器然后转身并检测非法字符.当我在浏览器中查看文件时,我看到了菱形问号字符,它通常指向编码问题.我可以在VM中的vim中打开文件并保存,:w ++enc=utf-8文件将正常加载.

我已经在主机和不同的主机操作系统上尝试了多个IDE,并且只能将它指向与vagrant和挂载目录有关的东西.我的IDE不是问题,因为我可以在本地运行文件并且它们可以工作,或者将它们保存到远程机器并且文件可以工作.只有当我将它们保存到安装的内容时才会/vagrant出现问题.

是否需要更改Apache以及操作系统中的其他内容才能使其正常工作?

小智 49

今天早上我遇到了这个问题.在httpd.conf中将EnableSendfile设置为off.

如果你看一下你的httpd.conf,它说"如果你从安装了NFS的文件系统提供服务,请关闭它." 在http://httpd.apache.org/docs/2.2/mod/core.html#enablesendfile中,它解释了"默认情况下,当处理请求时不需要访问文件中的数据时 - 例如,提供静态文件 - 如果操作系统支持,Apache使用sendfile来传送文件内容而无需读取文件."

由于您的Windows主机具有ntfs文件系统,因此linux guest虚拟机无法使用sendfile正确缓存该文件,因此apache需要自己发送文件.从apache请求文件时,这可能会导致边际速度减慢,但应该可以忽略不计.

  • 在OS X作为主机的Nginx上也存在同样的问题.再次,在nginx.conf中设置`sendfile off;`修复了这个问题. (7认同)

Bơ *_*hứi 6

这取决于您使用的服务器.

对于Nginx:in /etc/nginx/nginx.conf:

更改包含行sendfile on;sendfile off;.

对于Apache:in /etc/httpd/conf/httpd.conf:

更改删除评论 EnableSendfile off;

而且不要忘了restart你的Nginx或Apache.如果仍然无法正常工作, exitvagrant reload或类似的东西-重新启动虚拟机.