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

时间:2012-10-08 13:39:27

标签: apache character-encoding centos 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或其他内容才能使其正常工作?

2 个答案:

答案 0 :(得分: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请求文件时,这可能会导致边际速度减慢,但应该可以忽略不计。

答案 1 :(得分:6)

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

Nginx /etc/nginx/nginx.conf

将包含sendfile on;的行更改为sendfile off;

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

更改删除EnableSendfile off;

的评论

不要忘记你的Nginx或Apache restart。如果它仍然无效,exitvagrant reload或类似的东西 - 重新启动您的虚拟机。