php_network_getaddresses: getaddrinfo başarısız oldu: İsim ya da servis bilinen değil

4 Cevap php

İşte benim kod pasajı

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

Onu çalıştırdığınızda, bu çıkışları:

unable to connect to www.mydomain.net/1/file.php:80 (php_network_getaddresses: getaddrinfo failed: Name or service not known

Nedenini bilemiyorum. Herhangi bir yardım büyük mutluluk duyacağız.

EDIT: ['url'] Ben $ s GET veri göndermek için bu kullanıyorum belirtmeyi unutmuşum

4 Cevap

Sadece URL'ye GET veri göndermek istiyorsanız, siz) (file_get_contents gibi basit bir şey kullanmak gerekir;

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

Sen kullanarak uzak konak üzerindeki bir bağlantı doğrudan to a path açamıyor fsockopen. Url www.mydomain.net/1/file.php bu ilk parametre için tek geçerli değer ev sahibi bir yol içerir, www.mydomain.net.

Eğer uzak bir URL erişmeye çalışıyorsanız, o zaman file_get_contents() en iyi bahistir. Bu işlev için tam bir URL sağlayabilir ve bu normal bir HTTP isteği kullanarak bu konumdaki içeriği almak olacaktır.

Yalnızca bir HTTP isteği göndermek ve yanıt göz ardı etmek istiyorsanız, could fsockopen() kullanmak ve el herhangi bir yanıt yok sayarak, HTTP istek başlıklarını gönderebilirsiniz. Bu bağlantıyı açmak ancak mutlaka herhangi bir tepki okumak değil, hangi cURL olsa, ya da sadece düz eski fopen() ile daha kolay olabilir. Eğer fsockopen() ile yapmak istedim, böyle bir şey olabilir:

$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"); 

Bu tabii ki size kalmış işleme herhangi bir hata bırakır, ancak bu yanıtı okuyarak vakit kaybetmeyin anlamına gelecektir.

Benim yerel testserver ve örneğin yerel testdomains benzer bir sorun vardı: fonksiyonu ile www.testdomain.loc {[(0)];}

Yerel sunucuda hosts dosyasındaki hostname ekleyerek bunu çözdü:

Dosyasındaki /etc/hosts I ekledi:

192.168.1.1 www.testdomain.loc

Bu herkes yardımcı olur umarım

Eğer doğru değilse uzak konak bir dosyaya bir yuva açmaya çalışıyoruz. Eğer uzaktaki bir ana bir port numarasına bir soket bağlantısı (TCP / UDP) yapabilir. böylece kodunuzu bu gibi olmalıdır:

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

Eğer uzak bir dosya için bir dosya işaretçisi kaynak oluşturmak için çalışıyorsanız, size fopen () işlevi kullanabilirsiniz. ancak bunu yapmak için, siz de uygulama protokolü belirtmeniz gerekir.

PHP URL dosya açılır varsayılan akışı sarma sağlar. URL şemasına göre uygun akım sarıcı dahili olarak adlandırılan olacak. Açmaya çalıştığınız URL bu çözüm için geçerli bir şema yoktur. İçinde "http://" veya "ftp://" gibi bir şema var olduğundan emin olun.

böylece kod aşağıdaki gibi olacaktır:

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

Ben HTTP akışı sarıcı (yani http şema ile URL'leri dosya kaynaklarına eylemleri kolları) veri yazma destekler sanmıyorum yanında. HTTP üzerinden bir URL içeriğini okumak için fread () kullanabilirsiniz, ama ben yazma konusunda emin değilim.

EDIT: from comments and other answers I figured out you would want to send a HTTP request to the specified URL. the methods described in this answer are for when you want to receive data from the remote URL. if you want to send data, you can use http_request() to do this.