这是 VirtualBox 中的旧错误(请参阅:#819、#9069、#12597、#14920),其中 vboxvfs 似乎对同步文件的映射访问存在一些问题。
当您在 VM 外部编辑文件并且您希望在 VM 中看到相同的更改时,可能会发生这种情况。
要解决此问题,您需要通过禁用EnableSendfile
选项来禁用内核 sendfile 支持以将文件传递到客户端,无论是在 vhosts 文件中httpd.conf
还是在 vhosts 文件中,例如
<Directory "/path-to-nfs-files">
EnableSendfile Off
</Directory>
对于 NFS 或 SMB 挂载文件,这尤其麻烦。更改后重新加载 Apache。
与Nginx
(in nginx.conf
) 类似,例如
sendfile off;
其他解决方法是记住不要编辑主机上的文件,或者尝试在 VM 内重新编辑相同的文件。
另一个解决方法包括删除 Linux 页面缓存,例如
echo 1 > /proc/sys/vm/drop_caches
或者每秒清除一次缓存(根据这篇文章),尝试:
watch -n 1 $(sync; echo 1 > /proc/sys/vm/drop_caches)
注意:数字 1 代表释放 pagecache,2 代表 dentries 和 inode,3 代表 pagecache、dentries 和 inode。
可以通过以下 mmap-test 程序复制上述问题,请参阅:mmap-problem.c
.