file_get_contents – не удалось открыть поток: HTTP-запрос не удался! HTTP / 1.1 404 не найден

У меня возникают некоторые странные проблемы с файлом_get_contents после переноса моего сайта в новый домен. Я должен был создать новый домен и IP-адрес (используя Plesk), чтобы получить новый сертификат ssl. Теперь мой файл_get_contents, вызывающий скрипт в том же домене, дает мне следующее:

не удалось открыть поток: HTTP-запрос не удался! HTTP / 1.1 404 не найден

Если я назову тот же URL-адрес, используя file_get_contents на другом сервере, он отлично работает, и если я вызову www.google.com с сервера, который не работает, значит, похоже, если я вызову url на одном и том же сервере!

У меня такое чувство, что это может иметь какое-то отношение к двум IP-адресам с двумя разными сертификатами ssl на одном сервере, когда i file_get_contents / (индексная страница) сервера с сервера я получаю страницу plesk «это новый домен» поэтому его, как и apache, не ищет правильный виртуальный хост, когда его вызывали из его собственного разъема.

Прояснить (надеюсь!):

На сервере, на котором размещен домен:

file_get_contents('https://mydomain.com?limit=4&offset=0&s_date=2012-02-05&e_date=2012-03-13&order=release_date&dir=desc&cid=12'); 

дает «не удалось открыть поток: HTTP-запрос не удался! HTTP / 1.1 404 Not Found»

 file_get_contents('http://www.google.com'); 

работает правильно

На другом сервере:

 file_get_contents('https://mydomain.com?limit=4&offset=0&s_date=2012-02-05&e_date=2012-03-13&order=release_date&dir=desc&cid=12'); 

работает отлично.

Я попытался отключить ssl, и у меня все еще есть та же проблема.

Solutions Collecting From Web of "file_get_contents – не удалось открыть поток: HTTP-запрос не удался! HTTP / 1.1 404 не найден"

У меня тоже была эта проблема, когда я работал на небольшом тестовом сервере дома. Имя домена разрешено для вашего внешнего IP-адреса и отправляется запрос. Но поскольку запрос поступает из вашей сети, маршрутизатор не распознает его как обычный запрос. Возможно, у него есть веб-интерфейс для его настройки и пытается вернуть страницу из собственной системы управления, которая не найдена по указанному вами пути.

В этом случае я работал на ПК с ОС Windows, и я мог бы решить эту проблему, добавив домен, который я тестировал в свой файл hosts , указав 127.0.0.1 в качестве IP-адреса (или IP-адрес сервера, если он это еще одна машина в той же сети). Думаю, в Linux должно быть похожее решение.

Проблема не в PHP или на вашем сервере, а в вашем маршрутизаторе.

Большинство хостов теперь блокируют параметр furl_open который позволяет вам использовать file_get_contents() для загрузки данных с внешнего URL-адреса.

Вы можете использовать CURL или клиентскую библиотеку PHP такую ​​как Guzzle

Попробуйте сделать это:

 file_get_contents('https://mydomain.com?'.urlencode('limit=4&offset=0&s_date=2012-02-05&e_date=2012-03-13&order=release_date&dir=desc&cid=12'));