2011-06-09 78 views
30

我的主机是ArchLinux,我在CentOS guest虚拟机中运行Apache。我有一个共享文件夹中的虚拟主机配置和所有站点代码。为了能够将vhost配置放入共享文件夹,我将共享文件夹安装为apache:apache。用于Apache的VirtualBox中的共享文件夹

shared /mnt/shared vboxsf defaults,uid=48,gid=48 0 0 

当我在主机中编辑文件时,Apache将始终如一地开始发送带有尾随字符的旧版本文件。在vim中,它们显示为^ @,所以我猜它们是空字符。即使编辑第一行,空字符的数量与我所做的更改数量有关,空字符在最后显示。如果我想推测,它看起来像一个不好的差异。

如果我停止httpdumount,重新挂载,并开始httpd该文件看起来不错。重新启动httpd并没有帮助。

我该如何去调试mount? /var/log没有在我身上跳出来。

+0

您可以添加VBOX的权限的Apache2: http://superuser.com/questions/335322/how-do-i-set-the-apache2-documentroot-to -a-vboxsf-virtualbox-shared-folder-p – 2014-04-23 22:50:28

+0

'uid = 48,gid = 48'是什么。这与我遇到的问题无关。 – mqsoh 2014-04-24 20:11:23

+0

[Vagrant/VirtualBox/Apache2奇怪的缓存行为]可能的重复(http://stackoverflow.com/questions/9479117/vagrant-virtualbox-apache2-strange-cache-behaviour) – kenorb 2016-05-09 15:19:50

回答

53

我错了;它发生在其他地方,但我注意到它只有.css和.js文件。搜索引导我到this post,其中讨论了vboxsf和小文件的问题。

的解决方案是建立在Apache的

EnableSendfile off 
+0

这不适合我。但是,如果我在虚拟机上的vim中打开该文件并将其保存,它将在将其保存在虚拟机上后生效。任何其他想法? – 2014-02-12 23:35:15

+2

为了完整:在Nginx配置中它是“sendfile off” – 2014-08-07 09:30:54

1

要回答的具体问题“我怎么去调试安装”:

(以下是解释,基于我刚刚针对由Virtualbox中的相同错误引起的问题进行调查,但使用了不同的Web服务器)

诊断问题发生在某处,虚拟主机,我会在虚拟主机内使用“strace -p”来记录Apache的系统调用。

在进行支持时,只请求一个截断/损坏的文件。

仔细的诊断将显示它正确地归档该文件以获得其长度。然后它使用sendfile syscall提供它。基本上确认sendfile是不正确的,这意味着它必须是虚拟机中的一个错误。

搜索“sendfile virtualbox”会将您带到这些错误。

https://www.virtualbox.org/ticket/9069 https://www.virtualbox.org/ticket/12597

相关问题