编辑:这已经几乎完全重写,因为我已经缩小了这个问题。
我正在使用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;