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 перестал работать: Имя или сервис, не известный

Я использую, это для представления ПОЛУЧАЕТ данные к $s['url']

Я не могу выяснить почему. Любая справка значительно ценилась бы.

60
задан Neuron 8 January 2019 в 14:42
поделиться

3 ответа

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

$myGetData = "?var1=val1&var2=val2";
file_get_contents($url.$myGetData);
21
ответ дан 24 November 2019 в 17:50
поделиться

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

РЕДАКТИРОВАТЬ: из комментариев и других ответов я понял, что вы хотите отправить HTTP-запрос на указанный URL. методы, описанные в этом ответе, предназначены для случаев, когда вы хотите получать данные с удаленного URL. если вы хотите отправить данные, вы можете использовать http_request () для этого.

2
ответ дан 24 November 2019 в 17:50
поделиться

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

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

36
ответ дан 24 November 2019 в 17:50
поделиться
Другие вопросы по тегам:

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