2

当我尝试使用示例代码时:

$fp = fopen("gs://my_bucket/some_file.txt", "w");
fwrite($fp, "Hello");
fclose($fp);

我收到此错误:

警告:fopen():无法找到包装器“gs” - 您在配置 PHP 时是否忘记启用它?

更新

从命令行切换到运行应用程序服务器使原来的错误消失了,但我现在得到了这个错误:

'google\appengine\runtime\RPCFailedError' with message 'Remote implementation for urlfetch.Fetch failed'

有谁知道我该如何解决?

4

4 回答 4

0

使用“file_put_contents”而不是“fopen”为我解决了这个问题。

谢谢

于 2013-06-03T18:30:05.193 回答
0

您必须使用 dev_appserver.py(来自 GAE PHP SDK)在本地检查您的代码。不要通过本地网络服务器运行它,因为它不会提供额外的插件(例如 gs: 流支持)并且不会模拟“整个”GAE 环境(数据存储、Memcache、任务等)。

在 Debian 上,以下应该可以工作:

sudo apt-get install php5-cgi
/path/to/google_appengine/dev_appserver.py --php_executable_path=/usr/bin/php-cgi .

假如说:

  1. 您已经下载并安装了GAE PHP SDK
  2. 你在你的 GAE 测试应用程序目录中

您必须在端口 8080 上输入 localhost 网站以检查您的应用程序是否正常工作。在 localhost 端口 8000 上,您有管理服务器,您可以在其中检查本地 Datastore 中的数据。

之后,您可以将 phpinfo() 放在 .php 文件中,以检查“Registered PHP Streams”行中是否支持“gs”。

于 2013-05-26T15:18:01.580 回答
0

你在哪里看到这个错误?在生产服务器上,使用我们的 SDK 进行本地测试还是不使用 SDK?

我们将此处理程序安装为我们的设置脚本的一部分,因此如果您在本地进行测试,则需要在开发应用程序服务器中运行。

于 2013-05-25T20:33:21.390 回答
-1

正如错误所暗示的,包装即“gs”是未定义的。

它们是 php 的一些内置包装器,可用于 fopen php 函数;对于自定义包装器,即在您的情况下为“gs”,可以使用 stream_wrapper_register php 函数。

参考链接:

http://www.php.net/manual/en/wrappers.php

http://www.php.net/manual/en/function.stream-wrapper-register.php

于 2013-05-25T20:24:28.387 回答