名称parsing中的临时失败:主机名查找失败

我已经有一个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 

我可以通过l connect连接到谷歌和其他网站没有问题。

我login到我的Gmail帐户没有问题(也没有validation码)。

我很有智慧。 任何人有任何想法?

G-人

PHP在访问/ etc / hosts或/etc/resolv.conf时遇到了问题: PHP中存在一个与此特定错误有关的长期问题 。 解决办法是尝试重新启动Apache或任何调用PHP,或确保/ etc / hosts和/etc/resolv.conf可以通过调用PHP进行读取。

我刚刚经历了同样的错误和

 service httpd restart 

诀窍…

 % 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); ?> 

日志里有什么好东西?

在该行之前添加debugging代码,以确保该脚本可以正确parsing它。

我在升级magento 2到最新版本时遇到以下问题,所以我怀疑这是phpconfiguration的问题。

 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通过命令解决它。

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

然后再次尝试了composer update命令,它像一个魅力。

今天我有这样的错误,不过是在一个特定事件之后发生的,这个事件让我觉得我可能find了原因。

由于某些networking设备的问题,我实际上是通过服务器重新启动的,当它恢复的时候,电缆中的networking连接不正确,这意味着没有DNS服务器可用。

在此期间,这个PHP函数被调用,在此之后,它再也没有工作,直到我重新启动httpd。

我认为这个错误可能与networking故障(DNS不仅不可用,而且不可达,即错误的子网)有关,而且当networking随后恢复时,不会再次查找DNS。

这个是几年前,也许这个错误现在在PHP中修复?