带有教程代码的 Google GCP 错误
Posted
技术标签:
【中文标题】带有教程代码的 Google GCP 错误【英文标题】:Google GCP error with tutorial code 【发布时间】:2018-08-02 05:58:37 【问题描述】:解决问题。我的案例:
在阅读问题之前,由于我的开发环境,我的问题已经解决。使用 CodeKit(MacOS 上的应用程序),在从源文件夹构建我的代码时,composer.json 和其他文件等项目没有传输,导致下面描述的问题。如果确实发生这种情况,您可以搜索这两个文件夹以查找差异,将缺少的文档从 src 粘贴到构建文件夹。
:: 问题::
我今天开始使用 GCP,并按照此处定义的说明进行操作:
composer require google/cloud-storage
然后:
putenv("GOOGLE_APPLICATION_CREDENTIALS=/path/to/creds.json");
require __DIR__.'/vendor/autoload.php';
use Google\Cloud\Storage\StorageClient;
$myid = "my-project-id";
$storage = new StorageClient([
'projectId'=>$myid
]);
var_dump($storage->buckets());
运行时出现以下错误:
致命错误:在第 94 行的 /place/to/vendor/google/cloud-core/RequestWrapperTrait.php 中找不到类“Google\Auth\Cache\MemoryCacheItemPool”
我不知道如何解决这个问题,因为我刚刚开始使用 GCP。不知道这是平台问题还是我的代码问题。
Google Auth 的文件结构如下所示:
供应商 谷歌 认证 源代码 测试 云核心 云存储/Cache/MemoryCacheItemPool 存在于 tests 和 src 文件夹中,但以上引用它减去 src 或 tests 文件夹。
我也跑过:
composer update
并卸载并重新安装包无效
Google Cloud Project Link
【问题讨论】:
【参考方案1】:您在哪里找到您使用和粘贴的代码?因为official documentation中存在的那个是不同的。
这部分代码是您链接的教程中的代码,尝试使用客户端库并发布错误日志,如果有的话!
require __DIR__ . '/vendor/autoload.php';
use Google\Cloud\Storage\StorageClient;
$projectId = 'YOUR_PROJECT_ID';
$storage = new StorageClient(['projectId' => $projectId]);
$bucketName = 'my-new-bucket';
$bucket = $storage->createBucket($bucketName);
echo 'Bucket ' . $bucket->name() . ' created.';
请记住,存储桶名称应该是唯一的,因此我建议您使用长而复杂的名称对其进行测试,以避免命中已使用的名称,并始终测试操作的结果。
更新 我还测试了您的代码,它也可以正常工作,因此我认为这是环境设置中的错误。
您在运行composer require google/cloud-storage
时是否遇到任何错误?因为缺少Google\Auth\Cache\MemoryCacheItemPool
的类是作曲家安装的Psr
的一部分
[...]
Installing psr/cache (1.0.1)
Loading from cache
[...]
更新2 Matthew M 在其配置中发现错误并发布:
终于解决了这个问题。我在工作中使用 CodeKit 环境,看起来它正在改变一些东西 编译。运行一个未编译的版本,它工作正常。
【讨论】:
感谢您的回复 GalloCedrone,您可能会在我的代码中注意到,它与您的代码相似,只是添加了设置所需的环境变量。由于我已经手动创建了一个存储桶,我使用$storage->buckets();
并将其作为证明方法转储,我将更新我的问题代码以类似于更新后的代码。
好的!在我了解您正在尝试遵循文档之前提供尽可能多的代码。或者,当您写道:“按照此处定义的说明进行操作后”时,您可能错过了一个链接
感谢您的理解。上面问题中反映的代码现在反映了我编写的所有内容,但是错误似乎来自调用 StorageClient
类
我不明白为什么当你必须传递 project_id 时你传递 myid,即定义为 $myid = "my-bucket-id"。你在这里复制代码只是一个错字吗?
嗨,GalloCedrone。终于解决了这个问题。我在我的工作环境中使用 CodeKit,它看起来在编译时正在改变一些东西。运行一个未编译的版本,它工作正常。感谢您的帮助!以上是关于带有教程代码的 Google GCP 错误的主要内容,如果未能解决你的问题,请参考以下文章
带有 Terraform 的 Google Cloud 凭据
Python 2.7 和 GCP Google BigQuery:捕获文件加载错误?
使用 vs 代码在 Spring Boot 中设置 GCP 环境变量
协议缓冲区架构无效。导入“google/protobuf/any.proto”尚未加载:GCP/Pub-Sub
谷歌钱包应用内付款:未捕获的 ReferenceError:未定义 goog。 google.payments 与 goog.payments