CentOS 5.9 VM 上的 Apache 错误地提供修改后的文件

CentOS 5.9 VM 上的 Apache 错误地提供修改后的文件

编辑:由于我缩小了问题范围,这几乎已被完全重写。

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

当服务器首次启动时,共享目录中的原始文件(我的应用程序所在的目录)会被缓存。当我更改文件时,会提供原始文件 +/- 文件大小增量,从而导致我之前看到的图像损坏。因此,添加会在原始文件的末尾添加 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 及其 Guest Additions?

答案1

这很可能是 VirtualBox 的错误实现所导致的问题sendfile()

尝试设置:

EnableSendfile off

相当于 nginx 的:

sendfile off;

相关内容