1

以下のコマンドラインを使用して、Google Cloud Storage をマウントできました。

gcsfuse -o allow_other -file-mode=660 -dir-mode=770 --uid=<uid> --gid=<gid> testbucket /path/to/domain/folder

このグループには、ユーザーapacheが含まれます。Apache は、次のようにマウントされたドライブに書き込むことができます。

sudo -u apache echo 'Some Test Text' > /path/to/domain/folder/hello.txt

hello.txtが期待どおりバケットに表示されます。ただし、以下の php スクリプトを実行すると、エラーが発生します。

<?php file_put_contents('/path/to/domain/folder/hello.txt', 'Some Test Text');

PHP エラー:ストリームを開けませんでした: 権限が拒否されました

echo exec('whoami');Apache を返します

これは gcsfuse またはこれに類似したものでマウントするための一般的な使用法であると想定しましたが、この問題を抱えているのはインターネット上で私だけのようです。マウント方法の問題なのか、httpdのサービスセキュリティの問題なのかわかりません。

4

1 に答える 1

1

同様の問題に遭遇しました。

--implicit-dirsgcsfuse を使用して Google Storage バケットをマウントするときにフラグを使用します。詳細はこちら

バケットをフォルダーとしてマウントすると、OS はバケットをファイルとフォルダーを含む通常のフォルダーのように扱います。しかし、Google Cloud Storage バケットにはディレクトリ構造がありません。たとえば、Google Storage バケット内のhello.txt名前付きフォルダに名前付きファイルを作成する場合files、実際にはフォルダを作成してファイルを入れているわけではありません。という名前のオブジェクトがバケットに作成されfiles/hello.txtます。詳細については、こちらこちらをご覧ください。

OS が GCS バケットを階層構造のように扱うようにする--implicit-dirsには、gcsfuse にフラグを指定する必要があります。

注: gcsfuse はベータ版の品質のソフトウェアであるため、実稼働システムで使用することはお勧めしません。

于 2016-07-27T12:47:51.683 に答える