1PeGaS
@1PeGaS

Почему не приходят данные через контекст потока функции file_get_contents?

Точнее данные приходят, если указать в первом параметре file_get_contents например 'https://php.net'. А если указать локалхост localhost:4000/handler.php то просто бесконечная перезагрузка
<?php
  $opts = [
    'http' => [
      'method' => 'GET'
    ]
  ];
  $context = stream_context_create($opts);

  echo file_get_contents(
    'http://localhost:4000/handler.php',
    false,
    $context
  );
?>


Файл handler.php:
<?php
  echo 7;
?>
  • Вопрос задан
  • 264 просмотра
Решения вопроса 1
TheRikipm
@TheRikipm
Backend middle
Если вы используете встроенный веб-сервер то запрос к самому себе посылать нельзя.

Из документации:

Веб-сервер выполняет только один однопоточный процесс, поэтому приложения PHP будут останавливаться, если запрос заблокирован.


В данном случае сервер не может отправить запрос к localhost:4000/handler.php потому-что для начала ему нужно завершить запрос к файлу где у вас выводится file_get_contents(). В то-же время он не может завершить запрос к файлу с file_get_contents() потому-что для этого нужно завершить запрос к localhost:4000/handler.php, в итоге сервер висит.

Переходите на Apache или Nginx
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы