我在 Virtualbox 机器内安装的共享上的文件遇到了问题。
问题是,即使我可以从 shell 中清楚地看到文件的内容,但有时通过 Apache Web 服务器通过 http 提供相同的文件时,这些文件会出现轻微损坏、被截断或版本过旧的情况。
问题似乎只在文件达到一定长度(100-200 个字符)时才会发生。有时会在末尾添加不可读的字符,导致浏览器中出现小问号。另一个常见症状是,当文件从主机更改时,无法让 Apache 提供新版本。(该问题与 ETag 无关,Apache 对所有文件都有完美的读取权限。我怀疑它是否仅与编码有关。)
它确实看起来像是一个文件系统级别的问题,只会在 Apache 中显现出来。
一些事实:
主机:MacBook Pro/Snow Leopard
访客:Fedora 16
阿帕奇:2.2.22
VirtualBox:4.1.8
我曾尝试在 fstab 中挂载,但也手动尝试,将用户 ID 更改为 apache。
我很抱歉问题描述得模糊(未经研究?),但我真的不知道从哪里开始,我希望得到一些正确的提示。真正的问题是 Mac、Virtualbox、Fedora 还是 Apache?
更新:我意识到问题不仅仅在于 Apache httpd 无法正确提供文件 - 有时,当我在主机上创建新文件夹时,在客户机的 shell 中执行目录列表时,该条目会显示为一堆问号。几乎不用说,我无法遍历该新文件夹,除非我重新启动客户机。
答案1
查看门票https://www.virtualbox.org/ticket/819,他们建议你已经找到的是 Apache 的启用发送文件指令。关闭此指令似乎可以解决我们服务器上的问题。
答案2
搜索“apache mmap”会发现 Apache 将使用mmap(2)当文件超过一定大小时(在非 SunOS 系统上,默认大小为 1 字节),无法访问文件。此问题可能是由 VirtualBox 对共享文件夹 mmap 访问支持中的错误引起的。