Kegagalan sementara dalam resolusi nama: Kegagalan pencarian nama host


10

Saya punya skrip dalam PHP yang sudah berjalan dengan baik selama berbulan-bulan. Baru-baru ini berhenti bekerja.

Skrip ini terhubung ke gmail untuk mengirim email ke pelanggan saya.

Baru-baru ini, saya mulai mendapatkan kesalahan ini ketika saya menjalankan skrip:

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'

Perlu diingat, ini dengan nol perubahan kode.

Saya telah melihat resolv.conf saya dan tampaknya ok:

nameserver 208.67.222.222

Saya bisa ping gmail.com:

# 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  

Saya dapat terhubung melalui lynx ke google dan situs lain tanpa masalah.

Saya sudah masuk ke akun gmail saya tanpa masalah (tidak ada captcha di sana).

Saya akhirnya kehabisan akal. Adakah yang punya ide?

G-Man


Apakah script gagal semua waktu? Atau hanya sesekali?
MikeyB

Gagal setiap saat.
GeoffreyF67

Saya mengalami masalah serupa dengan daemon saya yang ditulis dalam C yang melakukan koneksi ulang TCP secara berkala. Di beberapa titik, getaddrinfo () tiba-tiba mulai mengembalikan kesalahan. Ketika saya melihat server, tidak ada permintaan DNS yang dikirim, dan menambahkan entri yang diperlukan ke / etc / hosts tidak membantu. Tentu, restart membantu tetapi seperti yang dicatat oleh Xerxes, ini bukan solusi yang sebenarnya. Awalnya saya berpikir bahwa masalah itu disebabkan oleh panggilan freeaddrinfo () yang hilang tetapi saya gagal mereproduksinya dengan aplikasi uji. Bagaimanapun, saya telah menambahkan panggilan pembersihan yang tepat ke daemon dan akan memonitornya dengan cermat.
Linulin

Jawaban:


13

PHP mengalami masalah dalam mengakses / etc / hosts atau /etc/resolv.conf: ada masalah lama dalam PHP terkait dengan kesalahan spesifik ini. Cara mengatasinya adalah mencoba me-restart Apache atau apa pun yang memanggil PHP, atau untuk memastikan / etc / hosts dan /etc/resolv.conf dapat dibaca oleh apa yang memanggil PHP.


Mulai ulang melakukan trik!
GeoffreyF67

4
Ya, tapi berapa lama sebelum restart berikutnya? Saya akan mencari lebih jauh dan menemukan akar penyebab masalah.
Xerxes

Wow saya mengalami masalah yang sama, tetapi ternyata layanan restart httpd adalah solusinya ... tapi saya masih tidak mengerti apa yang menyebabkan ini ...
J_Wesker

6

Saya baru saja mengalami kesalahan dan

service httpd restart

melakukan trik ...


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

Sekarang, coba gunakan Xdebug untuk melihat di mana masalahnya persis ....

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

Ada yang bagus di log?


1

Tambahkan kode debug sebelum baris itu untuk memastikan bahwa skrip dapat menyelesaikannya dengan benar.


0

Saya memiliki kesalahan ini hari ini, namun itu terjadi setelah peristiwa tertentu yang membuat saya berpikir bahwa saya mungkin telah menemukan penyebabnya.

Karena beberapa masalah peralatan jaringan, saya benar-benar reboot oleh server dan ketika itu muncul kembali, ada koneksi jaringan yang salah dalam pemasangan kabel, secara efektif berarti tidak ada server DNS yang tersedia.

sementara itu fungsi php ini dipanggil dan setelah ini tidak pernah berfungsi lagi sampai saya me-restart httpd.

Saya pikir bug mungkin berhubungan dengan kegagalan jaringan (di mana DNS tidak hanya tidak tersedia, tetapi juga tidak terjangkau, yaitu salah subnet) dan ketika jaringan kemudian pulih fungsi ini tidak mencari DNS lagi.

Thead ini beberapa tahun yang lalu, mungkin bug ini sekarang diperbaiki di PHP?


0

Saya mengalami masalah berikut saat memutakhirkan magento 2 ke versi terbaru, jadi saya menduga ini adalah masalah dengan konfigurasi php.

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

Atasi dengan memulai kembali perintah xampp through.

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

Kemudian mencoba composer updateperintah itu lagi dan itu bekerja seperti pesona.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.