![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 27.07.2011 Ostrzeżenie: (0%) ![]() ![]() |
Wyświetla mi się powyższy błąd
php_network_getaddresses: getaddrinfo failed: Ta nazwa lub usługa jest nieznana Pytanie to zadaje osobom doświadczonym, wiec nie odpowiadajcie jeśli tylko liznęliście php itd. Sprawa wygląda że nie jest to wina złego adresu - tylko np chwilowego braku połączenia itd, Teraz chodzi głównie o to że nie jestem w stanie w żaden sposób złapać tego ostrzeżenia. tzn nie działa ani @ ani try-catch. Po prostu Dupa. Błąd pojawia się przy wszystkich funkcjach łączących to jest np fsockopen. W profesjonalnej aplikacji nie ma miejsca na jakiekolwiek błędy prawda ? Skoro komunikat pojawia się tylko w chwili kiedy nie ma połączenia, to teoretycznie, ostrzeżenie się nigdy nie wyświetli w warunkach produkcyjnych bo przy braku połączenia powinien wyskoczyć 404. Ale Ale - Jeśli akurat ktoś ma aplikacje na localhoście - tzn na serwerze dostępnym bezpośrednio - to wtedy takie coś wyskoczy. I czy ktokolwiek z was wie jak to ostrzeżenie złapać, tzn poza globalnym wyłączeniem ostrzeżeń ![]() czy np jest w php.ini jakieś ustawienie, które tego dotyczy - cokolwiek. Byłbym wdzięczny - normalnie nie pytam, ale nie widzę nigdzie sposobu rozwiązania poza globalnym wyłączeniem ostrzeżeń oczywiście, Przykład try { @$fsock = fsockopen('www.google.pl', 80, $errno, $errstr); if (!$fsock) { $er = "$errstr ($errno)<br />\n"; echo $er; } else{ //do dzieła } } catch (Exception $e){ echo $e; } I tak wyskoczy Warning: fsockopen() [function.fsockopen]: php_network_getaddresses: getaddrinfo failed: |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 915 Pomógł: 210 Dołączył: 8.09.2009 Skąd: Tomaszów Lubelski/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Po pierwsze w środowisku produkcyjnym powinieneś zawsze wyłączyć wyświetlanie błędów (i nieważne czy strona stoi na localhost czy gdziekolwiek indziej).
Po drugie u mnie Nie zwraca żadnego warningu, tylko tekst "BŁĄD". Po usunięciu małpki otrzymuje dwa warningi: fsockopen(): php_network_getaddresses: getaddrinfo failed... i drugi: Warning: fsockopen(): unable to connect to www.tutajdomenaktorejniema.pl (php_network_getaddresses: getaddrinfo failed...) -------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 508 Pomógł: 75 Dołączył: 2.11.2005 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
W końcu jakiś ciekawy temat.
Jeżeli try catch i @ nie działa, funkcja musi zwyczajnie drukować ten tekst. Pozostaje inicjowanie zapisu do bufora przed wywołaniem funkcji, potem zczytujesz bufor i sprawdzasz czy coś w nim jest. Co do samego błędu, jest on generowany nie tyle przez php o ile przez system operacyjny. Stąd właśnie php nie jest w stanie wychwycić, czy jest zwrócony błąd czy coś innego i zwraca to jako zwykłe echo. Sprawdź, czy serwery DNS wpisane na serwerze masz z jakiegoś dobrego źródła, czy masz aktualne software. Jeżeli masz dostęp do powłoki shell, nie powinieneś mieć problemów z aktualizacją pakietów. Jeżeli trzymasz to na hostingu, problem jest jeszcze mniejszy, bo załatwić to powinna obsługa techniczna. W każdym razie błąd leży na 100% w systemie operacyjnym, a nie w skrypcie. Na forum php znalazłem taki post (źródło: https://bugs.php.net/bug.php?id=11058): Cytat Okay. I identified the problem. When apache starts, php or apache gets dns servers entry from /etc/resolv.conf You're using a dialup connection and when logging in, your dns servers have been added at this later moment. So there's a problem with apache or php to get informed that the content of resolv.conf has been updated. Confirmed for PHP 4.3.1/apache_1.3.27 so. Temporary solution is just to reload apache doing a apachectl stop/start Problem występuje od 2004 do 2010 roku. Może po aktualizacji php będzie dobrze? Pozostaje sposób z ob_flush() i sprawdzaniem bufora. Jeżeli Twój skrypt uruchamiany jest przez crontaba, możesz, w momencie błędu, kazać mu poczekać kilka sekund (sleep()), aż resolv.conf zostanie wczytany (wynika z powyższego postu), a następnie znów uruchomić fsockopen. Ten post edytował franki01 9.07.2012, 00:34:57 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 15.08.2025 - 08:01 |