Подтвердить что ты не робот

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']

4b9b3361

Ответ 1

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

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

Ответ 2

Невозможно открыть соединение напрямую на пути на удаленном хосте, используя 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"); 

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

Ответ 3

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

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

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

192.168.1.1 www.testdomain.loc

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

Ответ 4

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

Ответ 5

вы пытаетесь открыть сокет в файл на удаленном хосте, что неверно. вы можете сделать соединение сокета (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() для этого.

Ответ 6

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

  • Я зарегистрировался через SSH на сервере CentOS. Имя пользователя и пароль тип
  • cd/etc/
  • ls                                        // "только для просмотра списка"
  • vi хосты                                      // "редактировать файл хоста"
  • я                       &nbsp          // ", чтобы поместить файл в режим вставки"
  • 95.183.24.10                       [mail_server_name] в моем случае ( "mail.kingologic.com" )
  • Нажмите клавишу ESC
  • нажмите ZZ

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

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

Ответ 7

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

Я заменил строку

hosts:          files myhostname mdns4_minimal [NOTFOUND=return] dns

с

hosts:          files dns

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

Ответ 8

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

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

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

Ответ 9

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