2011-11-21 12 views
22

Mam problemy z DNS z pewną domeną docelową. Używam fopen() (ale ten sam problem z innymi funkcjami) do retreive obraz, ale otrzymuję ten błąd: Warning: fopen(): php_network_getaddresses: getaddrinfo failed: No such host is knownPHP php_network_getaddresses: getaddrinfo nie powiodło się: brak takiego hosta jest znany

mogę pingować lub nslookup domenę z wiersza polecenia, ale z jakiegoś powodu php rzuca to błąd. Kiedy próbuję fopen('http://www.google.com', r); lub innych domen, wszystko idzie dobrze. Ale wyżej wymieniona domena po prostu nie rozwiąże się z PHP. Mam spłukuje DNS, Apache wznowiona, ale nadal nie ma szczęścia ..

Próbowałem z:

  • systemu Windows 7, Apache 2.2 PHP 5.3.6
  • serwerze Windows 2008R2, Apache 2.2 PHP 5.3 .6

Co może spowodować, że ta pojedyncza domena nie zostanie rozstrzygnięta?

+2

Może to jest pomocne: http://en.wikipedia.org/wiki/Getaddrinfo - i powinieneś zapytać administratora systemu o problem. – hakre

+0

Prawdopodobnie domena naprawdę nie istnieje lub serwer DNS domeny docelowej jest niedostępny na twoim serwerze. Możesz jednak wypróbować 'ipconfig/flushdns', aby wyczyścić pamięć podręczną. – Polynomial

+0

Czy możesz podać dokładniejszy przykład adresu URL? (możesz usunąć nazwę domeny) – Narf

Odpowiedz

14

IMO to inny sposób na rozwiązanie nazwy z poziomu systemu operacyjnego i PHP.

Spróbuj:

echo gethostbyname("host.name.tld"); 

i

var_export (dns_get_record ("host.name.tld")); 

lub

$dns=array("8.8.8.8","8.8.4.4"); 
var_export (dns_get_record ("host.name.tld" , DNS_ALL , $dns)); 

Trzeba znaleźć jakiś błąd DNS/rozpoznawania.

1

Twój "host lokalny" nie może rozpoznać nazwy www.google.com, co oznacza, że ​​Twój komputer nie może/nie może uzyskać prawidłowego serwera dns.

Wypróbuj polecenie ping google.com na konsoli tego komputera, aby to sprawdzić.

0

Bardziej elastyczne jest używanie curl zamiast fopen i file_get_content do otwierania strony internetowej.

-4

Co spowodowało ten błąd z mojej strony była następująca linia

include_once dirname(__FILE__) . './Config.php'; 

udało mi się zrealizować to był winowajcą kiedy dodałem linie:

//error_reporting(E_ALL | E_DEPRECATED | E_STRICT); 
//ini_set('display_errors', 1); 

do wszystkich moich plików php.

Aby rozwiązać path issue i canged linię naruszające do:

include_once dirname(__FILE__) . '/Config.php'; 
+0

Twoja pierwotna linia i "zmieniona" linia są teraz takie same. – Noumenon

+1

Twoja odpowiedź nie wydaje się w ogóle powiązana. Czy otrzymałeś komunikat: Ostrzeżenie: fopen(): php_network_getaddresses: getaddrinfo failed: Nie ma takiego hosta, który jest znany podczas używania 'include'? Całkiem pewne, że to niemożliwe – Richard

+0

Uświadomiłem sobie, że ten błąd doprowadził do mnóstwa niepowiązanych problemów, dlatego też wysłałem go jako odpowiedź na wiele różnych problemów. – nyxee

0

A dziwne rzeczy znalazłem było to, że zmienna SYSTEMROOT muszą być ustawione inaczej getaddrinfo() zawiedzie na Windows 10.

Powiązane problemy