【问题标题】:How do I connect to Google Cloud Storage from a Google App Engine PHP script?如何从 Google App Engine PHP 脚本连接到 Google Cloud Storage?
【发布时间】:2013-12-23 18:52:32
【问题描述】:

我正在尝试使用 PHP 从我的 App Engine 写入 Google Cloud Storage 存储桶中的文件。我已按照文档设置存储桶并通过 PHP 访问它:

我已将应用引擎的服务帐户名称添加为相关存储桶的所有者,但是当我尝试运行类似以下内容时:

$fp = fopen('gs://[bucket-name]/log/log.txt', 'a+');

我收到以下错误:

PHP Warning:  fopen(gs://[bucket-name]/log.txt): failed to open stream: 
"\google\appengine\ext\cloud_storage_streams\CloudStorageStreamWrapper::stream_open" 
call failed in /[myfile.php] on line 33

[bucket-name] 只是一个占位符,我使用的是正确的存储桶名称。我错过了什么吗?

【问题讨论】:

  • FWIW,我还阅读了@*.com/questions/20294785/… 的帖子,并试图找到备用 App Engine 电子邮件标识符来授予存储桶的所有权,但没有运气。

标签: php google-app-engine google-cloud-storage


【解决方案1】:

a+ 不是打开 GCS 文件的有效模式。 GCS 中的对象不能附加到。它们只能被覆盖。您可以在此处找到有效模式:

https://code.google.com/p/googleappengine/source/browse/trunk/python/php/sdk/google/appengine/ext/cloud_storage_streams/CloudStorageStreamWrapper.php?spec=svn404&r=400#56

【讨论】:

  • 就是这样。将写入模式更改为'w' 允许流正常工作。我现在遇到了 is_resource($fp) 函数和谷歌云存储的问题,它总是返回 false,也许这是相关的。有时间我会和它一起玩。感谢您的帮助!
最近更新 更多