Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 上载期间设置文件可见性时出现Google云存储权限错误_Php_Laravel_Google Cloud Platform_Google Cloud Storage_Lumen - Fatal编程技术网

Php 上载期间设置文件可见性时出现Google云存储权限错误

Php 上载期间设置文件可见性时出现Google云存储权限错误,php,laravel,google-cloud-platform,google-cloud-storage,lumen,Php,Laravel,Google Cloud Platform,Google Cloud Storage,Lumen,我正在尝试使用将图像上载到地面军事系统。我希望上传的每个图像对任何人都可见。我已将我的bucket权限设置为对任何人进行读写 如果我喜欢这样做,它可以完美地工作,但图像不是公开的: Storage::disk('gcs')->put($location, $image); 然而,如果这样做,应该上传图片并公开,它会抛出错误 403权限不足 所以->setVisibility()给了我一个错误 谁能解释一下原因吗?是关于代码还是bucket权限?当你说“我已将我的bucket权限设置为对任

我正在尝试使用将图像上载到地面军事系统。我希望上传的每个图像对任何人都可见。我已将我的bucket权限设置为对任何人进行读写

如果我喜欢这样做,它可以完美地工作,但图像不是公开的:

Storage::disk('gcs')->put($location, $image);
然而,如果这样做,应该上传图片并公开,它会抛出错误

403权限不足

所以
->setVisibility()
给了我一个错误

谁能解释一下原因吗?是关于代码还是bucket权限?

当你说“我已将我的bucket权限设置为对任何人进行读写”时,我怀疑你的意思是你已经在旧bucket ACL上授予了allUsers:WRITER/allUsers:READER

旧ACL API不支持在bucket级别授予对象级别权限。因此,allUsers:bucket上的读卡器只授予object list权限,而不授予object get权限。相反,您需要更改默认的_object _acl,以向bucket中创建的新对象授予权限

但是,您可能宁愿使用IAM来授予所需的权限,而不是使用旧的ACL API,因为这些权限将由bucket中的所有对象继承,而不是在创建时对单个对象进行设置

gsutil iam ch alluser:objectViewer gs://ex bucket

当您说“我已将我的bucket权限设置为对任何人的读写权限”时,我怀疑您的意思是您已在旧bucket ACL上授予了alluser:WRITER/alluser:READER

旧ACL API不支持在bucket级别授予对象级别权限。因此,allUsers:bucket上的读卡器只授予object list权限,而不授予object get权限。相反,您需要更改默认的_object _acl,以向bucket中创建的新对象授予权限

但是,您可能宁愿使用IAM来授予所需的权限,而不是使用旧的ACL API,因为这些权限将由bucket中的所有对象继承,而不是在创建时对单个对象进行设置


gsutil iam ch alluser:objectViewer gs://ex bucket

是否删除了“setVisibility”调用?不再需要了。您只需要调用'Storage::disk('gcs')->put($location,$image);'而且文件应该是公开可读的。哦,我的错。所以基本上所有上传的图片现在都对任何人具有读取权限?您是否删除了“setVisibility”调用?不再需要了。您只需要调用'Storage::disk('gcs')->put($location,$image);'而且文件应该是公开可读的。哦,我的错。那么基本上所有上传的图片现在都有了对任何人的阅读权限?
Storage::disk('gcs')->setVisibility($filename, 'public')->put($location, $image);