Symfony, Localhost API REST, получает Timetout с помощью php curl, но URL работает с моим браузером и моей оболочкой и внешним php-скриптом - PullRequest
0 голосов
/ 18 октября 2018

На локальном хосте у меня есть приложение Symfony 4, которое предоставляет некоторые данные через очень простой API REST.

Я предоставляю данные с помощью маршрута API REST "/ api / foo" и запускаю свой сервер разработки проекта Symfony на локальном хосте: 8000 (команда: ./bin/console server:run *:8000)

По некоторым причинам,Я должен свернуть URL-адрес "http://127.0.0.1:8000/api/foo" из класса non-symfony в приложении Symfony. Я не хочу вызывать маршрут с помощью API Symfony, я должен использовать Curl . Я пишу этоочень простой код:

<?php 

    namespace App\faa;
    class Mycurl{

        public function run(){

            $ch = curl_init();

            // set url
            curl_setopt($ch, CURLOPT_URL, "http://127.0.0.1:8000/api/foo");

            //return the transfer as a string
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

            // $output contains the output string
            $output = curl_exec($ch);

            // close curl resource to free up system resources
            curl_close($ch);

            return $output;

        }

    }

?>

Но когда я выполняю этот код с контроллера Symfony:

// in symfony controller
$mycurl = new Mycurl();
$mycurl->run();

Я получаю тайм-аут, я не понимаю, почему: /

Мои тесты:

Когда я захожу на 127.0.0.1:8000/api/foo с моим браузером, он работает, я получаю JSON из моих данных

Из моей оболочки Linux, когда я выполняю команду curl localhost:8000/api/foo, она тоже работает, оболочка печатает ответ json.

Я создал очень простой скрипт php где-то на моем компьютере, чтобы свернуть маршрут REST API Symfony,и:

  • Когда я выполняю этот скрипт из оболочки (php myscript.php), я получаю свои данные
  • Когда я выполняюМилый этот скрипт с локальным сервером Apache (URL: http://127.0.0.1/myscript.php),, он тоже работает

Код моего php-файла:

<?php 

    $ch = curl_init();

    // set url
    curl_setopt($ch, CURLOPT_URL, "http://127.0.0.1:8000/api/foo");

    //return the transfer as a string
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

    // $output contains the output string
    $output = curl_exec($ch);

    // close curl resource to free up system resources
    curl_close($ch);

    return $output;

?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...