【问题标题】:Permission denied on download with Google Cloud Storage使用 Google Cloud Storage 下载时权限被拒绝
【发布时间】:2019-10-25 22:15:45
【问题描述】:

我正在尝试在 Google Cloud Storage 上的存储桶中获取对象。 为此,我在其 API 页面上使用 Google 推荐的代码:

https://cloud.google.com/storage/docs/downloading-objects#storage-download-object-php

但是当我这样做时,我得到了一个权限被拒绝的错误。

我为 Composer 配置了权限(例如,我列出存储桶中对象的代码工作正常)但我无法下载任何内容。我收到此错误:

警告:fopen(C:\wamp64\www\test):无法打开流:第 602 行 C:\wamp64\www\test\vendor\google\cloud-storage\src\StorageObject.php 中的权限被拒绝

我在 Cloud Storage 控制台中为自己授予了所有权限,但错误仍然出现。

我也想知道,是否可以在不下载的情况下获取/复制对象的内容?

感谢您的帮助!

编辑:代码很简单:

$storage = new StorageClient($config = [ 
    'keyFilePath' => "[PATH OF MY KEYFILE]",
    'projectId' => $projectId
]);
$bucket = $storage->bucket($bucketName);
$object = $bucket->object($objectName);
$object->downloadToFile($destination);
printf('Downloaded gs://%s/%s to %s' . PHP_EOL,
    $bucketName, $objectName, basename($destination));

}

在存储中,我只有带有对象列表的存储桶,我需要获取其中一个内容/dl 以将其与另一个 Json 合并

【问题讨论】:

  • 了解更多用于访问数据的逻辑的设计/实现可能会很有用。另外,请查看 Stackdriver 日志记录。这是所有 GCP 日志条目所在的位置,这可能有助于了解错误的性质。
  • 我编辑了我的问题!我会检查我的 GCP 日志条目
  • Stackdriver中没有错误条目,不代表拒绝权限。或者我不知道去哪里看
  • 查看文档,我猜在 downloadToFile 调用中出现错误?我看到它在存储文件的本地文件系统上采用本地路径。在你的故事中,$destination 的价值是多少?你有写权限吗?
  • 确实是 downloadToFile 调用失败了!目标是我本地系统中的本地文件夹。我希望这段代码能够创建文件并填充它,实际上我只需要读取对象的内容即可将其附加到另一个(已经创建的)文件中。我应该怎么做才能允许写入文件?我应该创建文件并期望此代码填充它吗?

标签: php download google-cloud-storage


【解决方案1】:

使单个对象公开可读:

https://cloud.google.com/storage/docs/access-control/making-data-public

验证下一个代码:

function download_object($bucketName, $objectName, $destination)

{

$storage = new StorageClient();

$bucket = $storage->bucket($bucketName);

$object = $bucket->object($objectName);

$object->downloadToFile($destination);

printf('Downloaded gs://%s/%s to %s' . PHP_EOL,
    $bucketName, $objectName, basename($destination));

}

【讨论】:

  • 谢谢!但是对我所有对象的访问已经是公开的。权限仍然被拒绝
【解决方案2】:

[解决方案] 我无法下载 PHP 代码所在文件夹之外的对象。 目的地需要是 DIR 。 '/my-file.json'

谢谢大家

【讨论】:

    猜你喜欢
    • 2018-01-15
    • 2016-06-02
    • 2020-08-05
    • 2012-05-13
    • 1970-01-01
    • 2014-06-27
    • 2019-12-31
    • 2022-08-03
    • 2017-07-02
    相关资源
    最近更新 更多