当前位置: 首页 > 知识库问答 >
问题:

Google App Engine(PHP)-file_get_contentsURL返回false

王高超
2023-03-14

我在本地使用谷歌应用程序引擎,请求返回它应该返回的。

然后我在google应用程序引擎(appspot服务myapp.appspot.com)上尝试,完全相同的调用只返回false,没有任何错误。

php留档说我应该得到一个错误或警告,但我真的什么也没看到。http://www.php.net/manual/en/function.file-get-contents.php

我在下面找到了这个gae php文档,但我真的不知道哪里可能出错。https://developers.google.com/appengine/docs/php/urlfetch/

我正在尝试从appspot获取另一个应用程序的url,gae文档显示:

向其他应用程序引擎应用程序发出请求

如果您正在向另一个AppEngine应用程序提出请求,您应该考虑告诉URL FETCH服务在调用它时不遵循重定向。

有人知道我是怎么做到的吗,或者也许真正的问题是什么?

以下是我的片段:

    $content = file_get_contents($url, 0, $context);
    if (false === $content) {
        $error = error_get_last();
        throw new ClientException($error['message']);
    }

更新:

这是我的php。ini:

google_app_engine.enable_functions = "php_sapi_name, php_uname, getmypid"
google_app_engine.allow_include_gs_buckets = "storage_bucket_name"
allow_url_include=1
allow_url_fopen=1

我尝试了以下代码:

    error_reporting(-1);
    ini_set('display_errors', 1);
    $content = file_get_contents($url, 0, $context);
    if (false === $content) {
        $error = error_get_last();
        throw new ClientException($error['message']);
    }

现在我得到了这个错误:“无法打开流:无效的头。必须是字符串。”

这是通过stream_context_create()传递的$上下文变量:http://www.php.net/manual/fr/function.stream-context-create.php

array(2) {
  ["http"]=>
  array(7) {
    ["method"]=>
    string(3) "GET"
    ["header"]=>
    string(0) ""
    ["content"]=>
    NULL
    ["protocol_version"]=>
    float(1)
    ["ignore_errors"]=>
    bool(true)
    ["max_redirects"]=>
    int(5)
    ["timeout"]=>
    int(5)
  }
  ["ssl"]=>
  array(1) {
    ["verify_peer"]=>
    bool(true)
  }
}

这让我想到了那条老线索:

使用文件获取内容GAE上的无效标题问题

共有1个答案

燕禄
2023-03-14

因为我有错误"未能打开流:无效的头。一定是一根绳子。"我专注于上下文的标题部分。

$上下文['超文本传输协议']['头']显然是一个字符串(0)"

我试图取消设置$context['http']['headers'],如果它是空的,问题就解决了。

注意:这只发生在谷歌应用程序引擎(GAE)中

 类似资料:
  • 本文向大家介绍PHP 返回,包括了PHP 返回的使用技巧和注意事项,需要的朋友参考一下 示例 该return语句将程序控件返回给调用函数。 当return从函数内部调用时,当前函数的执行将结束。 运行时,returnEndsFunctions();您将得到输出This is executed; 在return具有和参数的函数中调用时,当前函数的执行将结束,参数的值将返回给调用函数。

  • 问题内容: Array ( [sEcho] => 1 [iTotalRecords] => 7521 [iTotalDisplayRecords] => 1 [aaData] => Array ( [0] => Array ( [0] => Nordic Capital Buys SiC Processing [1] => 2010-06-21/nordic-capital-buys-sic-pr

  • 本文向大家介绍PHP引用返回,包括了PHP引用返回的使用技巧和注意事项,需要的朋友参考一下 示例 有时,您有时需要隐式返回引用。 当您想使用函数查找引用应绑定到哪个变量时,按引用返回非常有用。不要使用引用返回来提高性能。引擎将自动自动对此进行优化。仅在有充分的技术理由时才返回引用。 取自PHP文档,供按引用返回。 通过引用返回可以采用许多不同的形式,包括以下示例: 通过引用返回不仅限于函数引用。您

  • 问题内容: 我是AJAX的新手,并且对PHP传递回jQuery感到困惑。因此,您具有如下的AJAX函数: (我从ajax的另一个StackOverflow页面上获得了此信息。) 但是在其他各种资源上,他们将拥有成功部分,如下所示: 我只是困惑于是什么决定了这个变量的命名?如果PHP最终回显了一个数组: 我如何从AJAX获得此信息? 问题答案: Ajax- Requests获取整个站点。因此,您不会

  • 问题内容: 更新2: 那么这是它可以获得的最优化的吗? 更新1: 我知道我可以给sql查询增加限制,但是我也想摆脱foreach循环,这是我不应该需要的。 原始问题: 我有以下脚本,由于“ foreach”部分的缘故,它是从数据库返回许多行的良好IMO。 如果我知道我将总是只从数据库中获得1行,该如何优化它。如果我知道我只会从数据库中获得1行,我不明白为什么需要foreach循环,但是我不知道如何

  • 我试图通过require($page.“.php”)传递一个页面;但是,它只是从页面返回代码。变量$page连接到products页面。代码如下所示。...索引页... 产品列表 第名称第价格 产品ORDER BY name ASC”;$Query=mysql_query($SQL);而($ROW=mysql_fetch_array($query)或die(mysql_error())){?><?