30

私のホストマシンはArchLinuxで、CentOSゲストでApacheを実行しています。共有フォルダーにvhost構成とすべてのサイトコードがあります。vhost構成を共有フォルダーに配置できるようにするために、共有フォルダーをapache:apacheとしてマウントしました。

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

ホストでファイルを編集しているとき、Apacheは常に末尾の文字を含む古いバージョンのファイルの送信を開始します。vimでは^@と表示されるので、ヌル文字だと思います。ヌル文字の数は、最初の行を編集しても変更の数に関連しており、最後にヌル文字が表示されます。推測すると、それは悪い差分のように見えます。

httpd、、umount再マウントして開始httpdすると、ファイルは正常に見えます。httpdを再起動するだけでは役に立ちません。

マウントのデバッグはどのように行いますか?で私に飛び出したものは何もありません/var/log

4

3 に答える 3

53

私は間違っていた; それは他の場所で起こっていましたが、.cssファイルと.jsファイルだけで起こっていることに気づきました。検索の結果、vboxsfと小さなファイルの問題について説明しているこの投稿にたどり着きました。

解決策は、Apacheで設定することです

    EnableSendfile off
于 2011-06-28T18:37:47.430 に答える
2

解決lighttpd策は、以下の行をに追加することですlighttpd.conf

server.network-backend = "writev"

参照:Virtualbox共有フォルダーから提供するときにlighttpdが壊れている

于 2012-12-27T14:03:31.740 に答える
1

「マウントのデバッグについてはどうすればよいですか」という特定の質問に答えるには、次のようにします。

(以下は言い換えです。Virtualboxの同じバグによって引き起こされた問題について調査したところですが、Webサーバーが異なります)

Apacheが仮想ホスト内のファイルを読み取る方法のどこかで問題が発生していることを診断した後、仮想ホスト内で「strace -p」を使用して、Apacheによるシステムコールをログに記録します。

ストレーシング中に、切り捨てられた/破損したファイルを1つだけ要求します。

注意深く診断すると、ファイルの長さを取得するためにファイルが正しく記述されていることがわかります。そして、sendfilesyscallを使用してサービスを提供しています。基本的に、sendfileの確認は誤動作しています。つまり、仮想マシンのバグである必要があります。

「sendfilevirtualbox」を検索すると、これらのバグが見つかります。

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

于 2014-11-05T15:32:14.003 に答える