【发布时间】:2016-07-26 20:08:43
【问题描述】:
我可以使用下面的命令行挂载我的 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的服务安全问题。
【问题讨论】:
-
这里有很多活动部件。你能在没有 PHP 甚至 Apache 的情况下重现问题吗?那会有很大帮助。如果做不到这一点,也许您可以使用
strace来准确查看 PHP 导致失败的系统调用。
标签: google-cloud-storage google-compute-engine gcsfuse