CentOS 5.9虚拟机上的Apache不正确地提供修改后的文件

编辑:这已经几乎完全重写,因为我已经缩小了这个问题。

我正在使用Vagrant虚拟机来尽可能地镜像客户端的环境。 我使用Vagrant 1.3.5的VirtualBox 4.3(带有Guest Additions 4.3),服务器运行的是CentOS 5.9,Apache 2.2.3-83,PHP 5.3.3和Drupal 7。

当服务器首先启动我的应用程序驻留的共享目录中的原始文件时,将被caching。 当我更改文件原始文件+/-文件大小增量服务,导致我看到的图像损坏。 所以添加在原始的末尾添加NUL字符,删除截断文件。 当我使用nano查看文件时,内容是正确的; 重启httpd服务没有任何区别。 我必须重新启动虚拟机才能正确提供更改。

之前:

// The quick brown fox

变化:

// The quick brown fox jumps over the lazy dog

Apache服务于:

// The quick brown fox\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0

这个错误究竟在哪里呢? 使用Apache 2.2或其依赖关系,还是使用VirtualBox及其客户添加?

这很可能是VirtualBox的bug的sendfile()实现的问题。

尝试设置:

 EnableSendfile off 

相当于nginx:

 sendfile off;