34

我在 OSX、Ubuntu 和 Windows 7 上运行 vagrant,并在主机上使用 vim 和 Netbeans 作为 IDE。虚拟机运行 CentOS 6.3 和 Apache 2.2。docroot 设置为/vagrant.

当我编辑一个 JS 或 CSS 文件并保存它时,浏览器会转过身来检测非法字符。当我在浏览器中查看文件时,我看到菱形问号字符,这通常表示编码问题。我可以在VM内的vim中打开文件并保存,:w ++enc=utf-8文件将正常加载。

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

我需要更改 Apache 还是操作系统中的其他东西才能使其正常工作?

4

2 回答 2

51

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

如果您查看您的 httpd.conf,它会显示“如果您从 NFS 挂载的文件系统提供服务,请关闭此功能”。在http://httpd.apache.org/docs/2.2/mod/core.html#enablesendfile中,它解释说“默认情况下,当请求的处理不需要访问文件中的数据时——例如,当传递静态文件——如果操作系统支持,Apache 使用 sendfile 传递文件内容而无需读取文件。”

由于您的 Windows 主机具有 ntfs 文件系统,因此 linux 客户机无法使用 sendfile 正确缓存文件,因此 apache 需要自行发送文件。当从 apache 请求文件时,这可能会导致轻微的减速,但应该可以忽略不计。

于 2013-03-15T19:13:15.973 回答
7

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

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

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

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

更改删除评论EnableSendfile off;

不要忘记你restart的 Nginx 或 Apache。如果它仍然不起作用, exit或者vagrant reload类似的东西 - 重新启动你的虚拟机。

于 2016-05-24T03:09:37.787 回答