Ad çözümlemesinde geçici hata: Ana bilgisayar adı arama hatası


10

PHP'de aylardır iyi çalışan bir senaryom var. Son zamanlarda çalışmayı bıraktı.

Bu komut dosyası, müşterilerime bir e-posta göndermek için gmail'e bağlanıyor.

Son zamanlarda, komut dosyasını çalıştırdığımda bu hatayı almaya başladım:

The SMTP connection failed to start [tls://smtp.gmail.com:465]: 
fsockopen returned Error Number 0 and Error String 'php_network_getaddresses: 
getaddrinfo failed: Temporary failure in name resolution'

Unutmayın, bu sıfır kod değişikliği ile oldu.

Benim resolv.conf baktım ve ok gibi görünüyor:

nameserver 208.67.222.222

Ben gmail.com ping olabilir:

# ping smtp.gmail.com
PING gmail-smtp-msa.l.google.com (74.125.93.111) 56(84) bytes of data.
64 bytes from qw-in-f111.google.com (74.125.93.111): icmp_seq=1 ttl=247 time=26.7 ms  

Lynx üzerinden google ve diğer sitelere sorunsuzca bağlanabiliyorum.

Gmail hesabımda sorun olmadan oturum açtım (orada da captcha yok).

Ben bitmek üzereyim. Herhangi bir fikri olan var mı?

Federal ajan


Senaryo her zaman başarısız oluyor mu? Yoksa sadece ara sıra?
MikeyB

Her seferinde başarısız olur.
GeoffreyF67

Periyodik TCP yeniden bağları gerçekleştiren C ile yazılmış daemon ile benzer bir sorunla karşılaştım. Bir noktada getaddrinfo () aniden hatayı döndürmeye başladı. Sunucuya baktığımda, hiçbir DNS isteği gönderilmiyordu ve / etc / hosts içine gerekli girişi eklemek yardımcı olmadı. Elbette, yeniden başlatma yardımcı olur, ancak Xerxes'in haklı olarak belirttiği gibi, bu gerçek çözüm değildir. Başlangıçta sorunun eksik freeaddrinfo () çağrısından kaynaklandığını düşündüm ama bir test uygulamasıyla yeniden üretemedim. Her neyse, arka plan programına uygun temizleme çağrıları ekledim ve yakından izleyeceğim.
Linulin

Yanıtlar:


13

PHP / etc / hosts veya /etc/resolv.conf dosyasına erişmekte sorun yaşıyor: PHP'de bu özel hatayla ilgili uzun süredir devam eden bir sorun var . Çözüm, Apache'yi veya PHP'yi çağıran her şeyi yeniden başlatmayı denemek veya / etc / hosts ve /etc/resolv.conf'un PHP'yi çağıran tarafından okunabilir olduğundan emin olmaktır.


Yeniden başlatma hile yaptı!
GeoffreyF67

4
Evet, ancak bir sonraki yeniden başlatmadan ne kadar süre geçmesi gerekiyor? Daha ileriye bakar ve sorunun temel nedenini bulurdum.
Xerxes

Vay ben aynı sorunu yaşıyordu, ama görünüşe göre hizmet httpd yeniden başlatma çözüm ... ama yine de bunun neden olduğunu anlamıyorum ...
J_Wesker

6

Ben sadece aynı hatayı yaşadım ve

service httpd restart

hile yaptı ...


2
% dig @208.67.222.222 smtp.gmail.com +short
gmail-smtp-msa.l.google.com.
209.85.201.109
209.85.201.111
%

Şimdi, sorunun tam olarak nerede olduğunu görmek için Xdebug kullanmayı deneyin ....

<?php
xdebug_start_trace('/tmp/lookup-trace.log');
$ip = gethostbyname('smtp.gmail.com');
xdebug_stop_trace();
die($IP);
?>

Günlüklerde iyi bir şey var mı?


1

Komut dosyasının doğru şekilde çözebildiğinden emin olmak için bu satırdan önce hata ayıklama kodu ekleyin.


0

Bugün bu hatayı aldım, ancak nedenini bulmuş olabileceğimi düşündüren belirli bir olaydan sonra meydana geldi.

Bazı ağ ekipmanı sorunları nedeniyle, aslında sunucu tarafından yeniden başlatıldı ve geri geldiğinde, kablolamada yanlış bir ağ bağlantısı vardı, bu da etkin bir DNS sunucusu bulunmadığı anlamına geliyor.

bu arada bu php işlevi çağrıldı ve bundan sonra ben httpd yeniden başlatılıncaya kadar bir daha asla çalıştı.

Ben hata bir ağ hatası (nerede DNS sadece mevcut değil, ulaşılamaz, yani yanlış alt ağ) ile ilgili olabilir ve ağ daha sonra bu işlevi kurtarır DNS tekrar aramaz düşünüyorum.

Bu thead birkaç yıl önceydi, belki bu hata şimdi PHP'de düzeltildi?


0

Ben en son sürüme magento 2 yükseltme sırasında aşağıdaki sorunu vardı, bu yüzden php yapılandırma ile ilgili sorun olduğundan şüpheleniyorum.

The "https://repo.magento.com/packages.json" file could not be downloaded: php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution 
failed to open stream: php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution

Xampp through komutu yeniden başlatılarak çözüldü.

sudo /opt/lampp/lampp/stop
sudo /opt/lampp/lampp/start

Sonra composer updatekomutu tekrar denedi ve bir cazibe gibi çalıştı.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.