ความล้มเหลวชั่วคราวในการจำแนกชื่อ: การค้นหาชื่อโฮสต์ล้มเหลว


10

ฉันมีสคริปต์ใน PHP ที่ทำงานได้ดีเป็นเวลาหลายเดือน มันเพิ่งหยุดทำงาน

สคริปต์นี้เชื่อมต่อกับ gmail เพื่อส่งอีเมลไปยังลูกค้าของฉัน

เมื่อเร็ว ๆ นี้ฉันเริ่มได้รับข้อผิดพลาดนี้เมื่อฉันเรียกใช้สคริปต์:

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'

โปรดทราบว่านี่คือการเปลี่ยนแปลงรหัสศูนย์

ฉันดู resolv.conf ของฉันแล้วและดูเหมือนว่าจะโอเค:

nameserver 208.67.222.222

ฉันสามารถ 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  

ฉันสามารถเชื่อมต่อผ่าน lynx ไปยัง google และไซต์อื่น ๆ ได้โดยไม่มีปัญหา

ฉันลงชื่อเข้าใช้บัญชี gmail ของฉันโดยไม่มีปัญหา (ไม่มี captcha ที่นั่น)

ฉันอยู่ที่ปลายปัญญา ใครมีความคิดเห็นบ้าง

G-Man


สคริปต์ล้มเหลวตลอดเวลาหรือไม่ หรือเพียงแค่บางครั้ง?
MikeyB

ล้มเหลวทุกครั้ง
GeoffreyF67

ฉันพบปัญหาที่คล้ายกันกับ daemon ของฉันเขียนใน C ซึ่งทำการเชื่อมต่อ TCP เป็นระยะ ในบางจุด getaddrinfo () ก็เริ่มที่จะกลับข้อผิดพลาด เมื่อฉันดูเซิร์ฟเวอร์ไม่มีการส่งคำขอ DNS และการเพิ่มรายการที่ต้องการลงใน / etc / hosts ไม่ได้ช่วยอะไร แน่นอนว่าการรีสตาร์ทช่วย แต่ดังที่ Xerxes จดบันทึกไว้อย่างถูกต้องนี่ไม่ใช่วิธีแก้ปัญหาจริง ตอนแรกฉันคิดว่าปัญหาเกิดจากการขาด freeaddrinfo () การโทร แต่ฉันไม่สามารถทำซ้ำได้ด้วยแอปพลิเคชันทดสอบ อย่างไรก็ตามฉันได้เพิ่มการเรียกล้างข้อมูลที่เหมาะสมไปยังภูตและจะตรวจสอบอย่างใกล้ชิด
Linulin

คำตอบ:


13

PHP มีปัญหาในการเข้าถึง / etc / hosts หรือ /etc/resolv.conf: มีปัญหาอันยาวนานใน PHP ที่เกี่ยวข้องกับข้อผิดพลาดเฉพาะนี้ การแก้ไขคือลองรีสตาร์ท Apache หรืออะไรก็ตามที่เรียกใช้ PHP หรือให้แน่ใจว่า / etc / hosts และ /etc/resolv.conf สามารถอ่านได้โดยสิ่งที่เรียกใช้ PHP


รีสตาร์ทได้หลอกลวง!
GeoffreyF67

4
ใช่ แต่ก่อนที่จะมีการรีสตาร์ทครั้งต่อไปนานแค่ไหน ฉันจะดูต่อไปและค้นหาสาเหตุของปัญหา
Xerxes

ว้าวฉันมีปัญหาเดียวกัน แต่เห็นได้ชัดว่าบริการ httpd เริ่มต้นใหม่เป็นวิธีแก้ปัญหา ... แต่ฉันก็ยังไม่เข้าใจว่าอะไรทำให้เกิดสิ่งนี้ ...
J_Wesker

6

ฉันเพิ่งพบข้อผิดพลาดเดียวกันและ

service httpd restart

ทำเคล็ดลับ ...


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

ตอนนี้ลองใช้ Xdebug เพื่อดูว่าปัญหาตรงไหน ....

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

มีอะไรดีในท่อนไม้?



0

ฉันมีข้อผิดพลาดในวันนี้ แต่มันเกิดขึ้นหลังจากเหตุการณ์เฉพาะซึ่งทำให้ฉันคิดว่าฉันอาจพบสาเหตุ

เนื่องจากอุปกรณ์เครือข่ายมีปัญหาฉันจึงรีบูตเซิร์ฟเวอร์และเมื่อมันกลับมามีการเชื่อมต่อเครือข่ายที่ไม่ถูกต้องในการเดินสายซึ่งหมายความว่าไม่มี DNS เซิร์ฟเวอร์

ในระหว่างนี้ฟังก์ชั่น php นี้ถูกเรียกใช้และหลังจากนี้จะไม่ทำงานอีกเลยจนกว่าฉันจะรีสตาร์ท httpd

ฉันคิดว่าข้อผิดพลาดอาจเกี่ยวข้องกับความล้มเหลวของเครือข่าย (ที่ DNS ไม่เพียง แต่ไม่สามารถเข้าถึงได้ แต่ไม่สามารถเข้าถึงได้เช่นซับเน็ตผิด) และเมื่อเครือข่ายกู้คืนฟังก์ชั่นนี้ไม่ได้ค้นหา DNS อีกครั้ง

thead นี้เมื่อไม่กี่ปีที่ผ่านมาบางทีข้อผิดพลาดนี้ถูกแก้ไขใน PHP


0

ฉันมีปัญหาต่อไปนี้ในขณะที่อัพเกรด magento 2 เป็นเวอร์ชั่นล่าสุดดังนั้นฉันสงสัยว่ามันเป็นปัญหาของการกำหนดค่า 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

แก้ไขมันด้วยการรีสตาร์ท xampp through command

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

จากนั้นลองcomposer updateคำสั่งอีกครั้งและใช้งานได้อย่างมีเสน่ห์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.