mhddfs(またはunionfs)+ Apache =許可が拒否されました

私は現在、クライアント用に開発用の仮想マシンをセットアップしようとしています。 PHPコードを持つ3つのSVNリポジトリを1つのフォルダにまとめる必要があります(私はそれが醜いと知っていますが、それはどのようにロールするかです)。私はちょっとグーグルで、 mhddfs を見つけました。そこで、 branches というフォルダ内の3つのリポジトリをチェックアウトしました。

branches/branch1
branches/branch2
branches/branch3

私は/mnt/dev mhddfs で3つのブランチをマウントしました。ファイルシステムレベルでは、すべてが期待どおりに機能するので、 ls は3つのフォルダすべての内容を正しく表示します(分離しています)。しかし、Apacheでドキュメントルートを起動しようとすると、 403 Forbidden というエラーが発生します。 /mnt/dev 以外の場所も試してみましたが、違いはありません。

[Mon Feb 06 17:44:41 2012] [error] [client 192.168.56.1]
(13)Permission denied: access to/denied

3つのフォルダをマウントせずに index.php ファイルを/mnt/dev に置くだけで、すべてが正常に動作します。何か不足していますか?

あなたの助けを前もってありがとう。

編集:問題に関するもう少しのデータ:2つのディレクトリを作成すると、それは世界的にアクセス可能です...

[email protected]:/tmp > ls -lha
drwxrwxrwt  6 root     root   4,0K  6. Feb 20:11 .
drwxr-xr-x 21 root     root   4,0K  6. Feb 10:07 ..
drwxrwxrwx  2 www-data vboxsf 4,0K  6. Feb 20:11 test1 # includes index.htm
drwxrwxrwx  2 www-data vboxsf 4,0K  6. Feb 20:13 test2 # includes index2.htm

...そしてそれらをmhddfs経由でマウントする...

mhddfs /tmp/test1,/tmp/test2 /mnt/dev
mhddfs: directory '/tmp/test1' added to list
mhddfs: directory '/tmp/test2' added to list
mhddfs: mount to: /mnt/dev
mhddfs: move size limit 4294967296 bytes

... ls は正しく動作します...

[email protected]:/tmp > ls -lh /mnt/dev/
insgesamt 8,0K
-rwxrwxrwx 1 www-data vboxsf 12  6. Feb 20:11 index2.htm
-rwxrwxrwx 1 www-data vboxsf 11  6. Feb 20:11 index.htm

... Apache(ユーザー: www-data 、グループ: vboxsf )は上記の403エラーで終了せずに終了します。しかし、フォルダをアンマウントし、/mnt/dev index.htm を置くと、Apacheがファイルを読むことができるので、すべてが期待通りに機能します。

何か案は?

ではごきげんよう、 マーティン

1
Apacheは/ mnt/dev内のファイルを読む権限がありますか?マウントポイント自体がApacheに「オープン」しているからといって、あなたが内部にマウントしているものも同様であるとは限りません。
追加された 著者 Marc B,
はい。私はuser:group www-data:vboxsfを使ってApacheを実行しています(VirtualBoxの共有フォルダにあるファイルにアクセスしたいからです)。私はデバッグの目的でパーミッションを0777に設定しようとしましたが、成功しませんでした。私はすぐにいくつかのデータを提供します。
追加された 著者 Martin Donath,
私はこのトピックにいくつかの情報を追加しました。
追加された 著者 Martin Donath,
誰もいない?それ以外の場合は、 rsync を使用して、変更/タッチ時にすべてのフォルダを1つに複製します。愚かな、しかし、実際のソリューション(と、この縮退SVNの構造に値する);-)
追加された 著者 Martin Donath,

1 答え

I encountered the same problem on Linux.
Following the steps below, I was able to solve it.

[STEPS]

  1. /etc/fuse.confで 'user_allow_other'を有効にする
  2. '-o allow_other'オプション付きのmhddfsを使用します。例: mhddfs -o allow_other     / dir1、/ dir2/path/to/mount
3
追加された
ありがとう、私はそれを試してみましょう!
追加された 著者 Martin Donath,
あなたは私の英雄です - それは実際に動作します!ありがとう!
追加された 著者 Martin Donath,
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com