На локальном хосте у меня есть приложение 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;
?>