谷歌GCP错误与教程代码

时间:2018-02-22 11:39:21

标签: php google-cloud-platform google-cloud-storage google-compute-engine

解决问题。我的案例:

在阅读问题之前,由于我的开发环境,我的问题已经解决了。使用CodeKit(MacOS上的应用程序),在从源文件夹构建我的代码时,诸如composer.json和其他文件之类的项目不会传输,从而导致下面描述的问题。如果您确实在侦察这两个文件夹以查找差异,请将丢失的文档从src粘贴到构建文件夹。

:: QUESTION ::

我今天开始使用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的文件结构如下所示:

  • 供应商
    • 谷歌
      • AUTH
        • SRC
        • 测试
      • 云的芯
      • 云的存储
/ Cache / MemoryCacheItemPool 存在于tests和src文件夹中,但上面引用它而不是src或tests文件夹。

我也跑了:

composer update

并卸载并重新安装包无效

Google Cloud Project Link

1 个答案:

答案 0 :(得分: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
[...]

<强> UPDATE2 Matthew M在配置中发现错误并发布:

  

终于解决了这个问题。我在工作中使用CodeKit   环境,它似乎正在改变它的东西   编译。一个未编译的版本,它工作正常。