php_network_getaddresses: getaddrinfo не удалось: имя или услуга неизвестны

Вот фрагмент моего кода

$fp = fsockopen($s['url'], 80, $errno, $errstr, 5); if($fp){ fwrite($fp, $out); fclose($fp); 

Когда я запускаю его, он выводит:

не удалось подключиться к www.mydomain.net/1/file.php:80 (php_network_getaddresses: getaddrinfo не удалось: имя или услуга неизвестны

Я не могу понять, почему. Любая помощь будет принята с благодарностью.

EDIT: Я забыл упомянуть, что я использую это для отправки данных GET в $s['url']

Если вы хотите отправлять данные GET в URL-адрес, вы должны использовать что-то простое, например file_get_contents ();

 $myGetData = "?var1=val1&var2=val2"; file_get_contents($url.$myGetData); 

Вы не можете открыть соединение напрямую с путём на удаленном хосте с помощью fsockopen . URL-адрес www.mydomain.net/1/file.php содержит путь, когда единственным допустимым значением для этого первого параметра является хост, www.mydomain.net .

Если вы пытаетесь получить доступ к удаленному URL-адресу, то ваш лучший вариант – file_get_contents () . Вы можете предоставить полный URL этой функции, и он будет получать контент в этом месте, используя обычный HTTP-запрос.

Если вы хотите отправить HTTP-запрос и проигнорировать ответ, вы можете использовать fsockopen() и вручную отправлять заголовки HTTP-запросов, игнорируя любой ответ. Это может быть проще с помощью cURL , или просто простого старого fopen () , который откроет соединение, но не обязательно прочитает какой-либо ответ. Если вы хотите сделать это с помощью fsockopen() , это может выглядеть примерно так:

 $fp = fsockopen("www.mydomain.net", 80, $errno, $errstr, 30); fputs($fp, "GET /1/file.php HTTP/1.1\n"); fputs($fp, "Host: www.mydomain.net\n"); fputs($fp, "Connection: close\n\n"); 

Это, конечно, оставляет любую обработку ошибок, но это будет означать, что вы не теряете время, читая ответ.

У меня была аналогичная проблема на моем локальном сервере тестирования и локальных тестовых доменах, например: http://www.testdomain.loc с функцией GetImageSize() ;

Выбрал его, добавив имя хоста в файл hosts на локальном сервере:

В файле / etc / hosts я добавил:

 192.168.1.1 www.testdomain.loc 

Надеюсь, это поможет кому угодно

 $url = "http:user:pass@//www.example.com/abc.php?var1=def"; $url = urlencode($url); $contents = file_get_contents(urldecode($url)); echo $contents; 

вы пытаетесь открыть сокет в файл на удаленном хосте, что неверно. вы можете сделать соединение сокета (TCP / UDP) с номером порта на удаленном хосте. поэтому ваш код должен выглядеть следующим образом:

 fsockopen('www.mysite.com', 80); 

если вы пытаетесь создать ресурс указателя файла в удаленном файле, вы можете использовать функцию fopen (). но для этого вам также необходимо указать протокол приложения.

PHP предоставляет стандартные потоковые оболочки для открытия файла URL. на основе схемы URL-адреса соответствующая обтекатель потока будет вызвана внутренне. URL, который вы пытаетесь открыть, не имеет допустимой схемы для этого решения. убедитесь, что в нем есть такая схема, как «http: //» или «ftp: //».

поэтому код будет выглядеть так:

 $fp = fopen('http://www.mysite.com/path/file.txt'); 

Кроме того, я не думаю, что обтекатель HTTP-потока (который обрабатывает действия с файловыми ресурсами по URL-адресам с помощью схемы http) поддерживает запись данных. вы можете использовать fread () для чтения содержимого URL-адреса через HTTP, но я не уверен в написании.

EDIT: из комментариев и других ответов я понял, что вы захотите отправить HTTP-запрос указанному URL-адресу. методы, описанные в этом ответе, предназначены для тех случаев, когда вы хотите получать данные с удаленного URL-адреса. если вы хотите отправить данные, вы можете использовать http_request () для этого.

Я получал ту же ошибку fsocket (), и я только что обновил файлы хостов

  1. Я зарегистрировался через SSH на сервере CentOS. Тип USERNAME и PASSWORD
  2. cd / etc /
  3. ls // "просто посмотреть список"
  4. vi hosts // "редактировать файл хоста"
  5. i // ", чтобы поместить файл в режим вставки"
  6. 95.183.24.10 [mail_server_name] в моем случае ("mail.kingologic.com")
  7. Нажмите клавишу ESC
  8. нажмите ZZ

надеюсь, что это решит вашу проблему

для любого последующего запроса, пожалуйста, звоните мне по адресу http://kingologic.com

В моем случае эта ошибка вызвана неправильной конфигурацией /etc/nsswitch.conf на debian.

Меня заменили строки

 hosts: files myhostname mdns4_minimal [NOTFOUND=return] dns 

с

 hosts: files dns 

и все работает прямо сейчас.

Попробуйте установить ENV PATH . Добавьте путь PHP в ENV PATH.

Для того, чтобы это расширение работало, есть файлы DLL, которые должны быть доступны для системы Windows PATH. Информацию о том, как это сделать, см. В разделе «Вопросы и ответы», озаглавленный «Как добавить каталог PHP в PATH на Windows». Хотя копирование DLL-файлов из папки PHP в системный каталог Windows также работает (поскольку системный каталог по умолчанию находится в PATH системы), это не рекомендуется. Это расширение требует наличия следующих файлов в PATH: libeay32.dll

http://php.net/manual/en/openssl.installation.php

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