使用Zomato API,我编写了一个简单的PHP代码来获取搜索查询披萨的JSON数据。但是由于某种原因,当我将其推送到Google App Engine时它不起作用。
我已经尝试使用xampp在本地主机中运行PHP代码,并且可以正常工作。但是,当我在Google云中运行代码时,它显示了一个空页面,没有错误消息。
这是我要在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>";
?>
我为将代码推送到Google云平台而编写的app.yaml
runtime: php55
api_version: 1
handlers:
- url: /
script: index.php
我现在很迷茫,希望有人可以给我一些有关此问题的见解
编辑:感谢JohnHanley在下面的评论,我发现Google App Engine控制台显示以下错误消息:“ PHP致命错误:在/ base / data / home / apps / f〜cloud-assignment中调用未定义的函数curl_init() -2-254823 / 20191005t035406.421500489485193“。
我显然已经在错误消息中进行了搜索,发现默认情况下,Google App Engine显然无法识别curl_init()函数,显然我需要通过添加php.ini文件并在php中写几行代码来启用它.ini文件,然后再将其推送到云。抱歉,我还很陌生,有人可以告诉我如何?
感谢John Hanley的评论和一点点的搜寻,我发现了这个堆栈溢出帖子:app.yaml file mistake : Call to undefined function curl_init(),它解决了我的问题。
显然,默认情况下,cURL扩展名Google App Engine被禁用,因此错误消息说curl_init()函数无法识别,并且要激活它,需要创建php.ini,并在其中添加“ google_app_engine.enable_curl_lite = 1”行,将其添加到包含app.yaml文件的文件夹中,然后再将其推送到云中。