Zomato API, написанный на PHP, не работает в Google App Engine

Используя Zomato API, я написал простой PHP-код для получения данных JSON для пиццы поискового запроса. Но по какой-то причине он не работает, когда я загружаю его в Google App Engine.

Я пробовал запустить PHP-код на моем локальном хосте с помощью xampp, и он работает. Но когда я запустил код в облаке Google, он показывает мне пустую страницу без сообщений об ошибках.

Это код PHP, который я пытаюсь запустить в Google App Engine.

  <?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, который я написал, чтобы отправить свой код на облачную платформу Google.

runtime: php55
api_version: 1

handlers:
- url: /
  script: index.php

Я совсем заблудился, надеюсь, кто-нибудь может дать мне некоторое представление об этой проблеме

РЕДАКТИРОВАТЬ: благодаря приведенному ниже комментарию Джона Хэнли я ​​обнаружил следующее сообщение об ошибке, показанное на моей консоли Google App Engine: «Неустранимая ошибка PHP: вызов неопределенной функции curl_init () в / base / data / home / apps / f ~ cloud-assignment-2 -254823 / 20191005t035406.421500489485193 ".

Я, по-видимому, погуглил сообщение об ошибке и обнаружил, что, по-видимому, по умолчанию Google App Engine не распознает функцию curl_init (), и, по-видимому, мне нужно включить ее, добавив файл php.ini и напишите несколько строк кода в php.ini файл перед отправкой в ​​облако. Извините, я новичок в этом, может кто-нибудь показать мне, как?


person CY1223    schedule 04.10.2019    source источник
comment
1) Что эта команда отображает curl -i http://example.com/? Используйте свое доменное имя в команде. 2) Добавить логирование: syslog(LOG_WARNING, "Error:" . curl_error($ch)); 3) Какие сообщения логируются в Google Stackdriver?   -  person John Hanley    schedule 04.10.2019
comment
Привет @JohnHanley Спасибо за ответ. Я новичок в платформе Google Cloud, но я следовал вашим инструкциям, чтобы просмотреть сообщения, зарегистрированные в моей консоли Google Cloud, и мне удалось найти это сообщение об ошибке: Неустранимая ошибка PHP: вызов неопределенной функции curl_init () в / base / data / home / apps / f ~ cloud-assign .... Я немного погуглил, нужно ли мне что-то загружать, чтобы функция curl_init () работала?   -  person CY1223    schedule 05.10.2019
comment
Вы используете стандарт App Engine? Вам нужно будет включить расширение cURL. Если нет, отредактируйте свой вопрос, указав более подробную информацию об используемых вами сервисах Google Cloud. Прочтите эти ссылки: cloud.google.com/appengine/docs/standard/ php / issue-requests И cloud.google.com/ appengine / docs / standard / php /   -  person John Hanley    schedule 05.10.2019
comment
Да, я использую стандарт App Engine Standard, так как делаю это только для выполнения задания. А для файла php.ini есть ли у него предопределенный формат? или я просто добавляю эту строку (extension = curl.so) и отправляю ее в облако, чтобы включить расширение?   -  person CY1223    schedule 05.10.2019


Ответы (1)


Благодаря Джону Хэнли из комментариев и небольшому поиску в Google я нашел это сообщение о переполнении стека: ошибка файла app.yaml: вызов неопределенной функции curl_init (), которая решила мою проблему.

По-видимому, по умолчанию расширение cURL Google App Engine отключено, поэтому появляется сообщение об ошибке, в котором говорится, что функция curl_init () не распознается, и для ее активации необходимо создать php.ini со строкой "google_app_engine.enable_curl_lite = 1" внутри и добавить в папку с файлом app.yaml перед тем, как отправить его в облако.

person CY1223    schedule 05.10.2019
comment
Чтобы улучшить свой ответ для других, добавьте свои файлы php.ini и app.yaml. Это послужит примером для других. - person John Hanley; 05.10.2019