1

使用 Zomato API,我编写了一个简单的 PHP 代码来获取搜索查询比萨饼的 JSON 数据。但是由于某种原因,当我将它推送到 Google App Engine 时它​​不起作用。

我尝试使用 xampp 在我的本地主机中运行 PHP 代码,它可以工作。但是当我在谷歌云中运行代码时,它会显示一个没有错误消息的空白页面。

这是我试图在 Google App Engine 上运行的 PHP 代码

  <?php
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "https://developers.zomato.com/api/v2.1/search?q=pizza&start=0&count=10");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
    $headers = array(
      "Accept: application/json",
      "User-Key: f0baf53bd8c31d3c625e9d9c0d379379"
      );
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    $result = curl_exec($ch);
    if (curl_errno($ch)) {
        echo 'Error:' . curl_error($ch);
    }
    curl_close ($ch);
    echo "<pre>"; 
    print_r($result); 
    echo "</pre>";
    ?>

我为将代码推送到谷歌云平台而编写的 app.yaml

runtime: php55
api_version: 1

handlers:
- url: /
  script: index.php

我目前很迷茫,希望有人能给我一些关于这个问题的见解

编辑:感谢 JohnHanley 在下面的评论,我发现我的 Google App Engine 控制台显示以下错误消息:“PHP 致命错误:调用 /base/data/home/apps/f~cloud-assignment-2 中的未定义函数 curl_init() -254823/20191005t035406.421500489485193”。

我显然已经用谷歌搜索了错误消息,发现显然默认情况下谷歌 App Engine 无法识别 curl_init() 函数,显然我需要通过添加 php.ini 文件并在 php.ini 中编写几行代码来启用它在将其推送到云端之前提交文件。抱歉,我对此很陌生,有人可以告诉我怎么做吗?

4

1 回答 1

2

感谢评论中的 John Hanley 和一些谷歌搜索,我发现了这个堆栈溢出帖子:app.yaml 文件错误:调用未定义的函数 curl_init()解决了我的问题。

显然,默认情况下,cURL 扩展 Google App Engine 被禁用,因此错误消息指出 curl_init() 函数无法识别,要激活它,需要在内部创建 php.ini 行“google_app_engine.enable_curl_lite = 1”并添加到将 app.yaml 文件推送到云端之前的文件夹。

于 2019-10-05T03:17:12.983 回答