我正在使用Vagrant运行带有Apache2的Ubuntu供电VirtualBox。

除其他外,web服务器从my/vagrant目录提供静态文件。

这在大多数时候都很有效。但是,当我更改共享文件夹上的图像并重新加载网站时,会提供以前版本的图像,但会被截断。

它的工作原理,如果我先从我的共享文件夹中删除旧图片,刷新网站,使图片不显示,然后保存新文件并重新加载网站。

有人知道这个问题吗?我没有安装任何特殊的东西,只是带有mod_rewrite的Apache2和带有Mongo,APC插件,MongoDB以及带有一堆脚本的nodeJS的PHP。

其他提示

这让我发疯了!感谢您发布此信息。对于那些不知道如何更改配置文件的人来说,这是我所做的:

查找文件: $ sudo find -name "nginx.conf"

我的在这里: ./etc/nginx/nginx.conf

所以我运行这个来修改它: $ sudo nano ./etc/nginx/nginx.conf

更改包含的行 sendfile on;sendfile off;

别忘了 exitvagrant reload!

这是VirtualBox中的旧错误(请参阅:#819 #9069 #12597 #14920 )vboxvfs似乎有一些mmapped访问与同步的文件的问题。

当您在VM之外编辑文件时可能会发生,您希望在VM中看到相同的更改。 要解决此问题,您需要禁用内核SendFile支持,通过禁用 EnableSendfile选项,无论是在httpd.conf还是在vhosts文件中,例如

<Directory "/path-to-nfs-files">
  EnableSendfile Off
</Directory>
.

对于NFS或SMB已安装文件尤其问题。更改重新加载Apache后。

类似于Nginx (在nginx.conf),例如,。

sendfile off;
.


其他解决方法是要记住未编辑主机上的文件,或尝试重新编辑相同的文件,但在VM中。


另一个解决方法包括丢弃Linux PageCache,例如,。

echo 1 > /proc/sys/vm/drop_caches
.

或清除每秒缓存(按此帖子),尝试:

watch -n 1 $(sync; echo 1 > /proc/sys/vm/drop_caches)
.

注意:第1号代表释放pageCache,2对于Dentries和Inodes,3用于PageCache,Dentries和Inodes。


可以通过以下MMAP-Test程序复制上述问题,请参阅: mmap-problem.c

我在VirtualBox/Docker/Nginx环境中遇到了类似的问题。

删除Linux pagecache的决定 echo 1 > /proc/sys/vm/drop_caches 工作正常,但看起来很尴尬。

还有指令 sendfile off;nginx.conf 没有解决问题,我试图用它与 expires off; 一起指导,并取得了成功。

所以,我的决定看起来像

sendfile off;
expires off;

对于使用Laravel 5,Barryvdh的Debugbar和Browsersync通过Gulp.Watch,您可能会收到此错误。由于浏览器同步如何代理我的请求,我的错误完全相同。 如果我通过以下方式查看了我的DEV服务器: http://127.0.0.1:3000/laravel/page 我收到了错误 http://127.0.0.1/laravel/page 错误消失了。

我已经用我们的朋友在Browsersync标记了它,他们做了一个很棒的工作。所以,它更像是一个原因而不是解决方案,而不是花时间试图解决它,测试看看这是你的问题,在浪费之前还是更多的时间。

这个问题也类似于本文中找到的错误

这也负责关于CentOS / VirtualBox设置中的CSS文件的奇怪行为。

您可以更改/ vagrant文件夹中的CSS文件的内容,浏览器将显示200的状态(而不是304),这意味着它知道该文件是新的。但内容不会改变。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top