名称解析暂时失败:主机名查找失败


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  

我可以通过Lynnx毫无问题地连接到Google和其他网站。

我已经成功登录了我的gmail帐户(那里也没有验证码)。

我机智。谁有想法?

侠客


是脚本失败所有的时间?还是只是偶尔?
2009年

每次都失败。
GeoffreyF67,2009年

我用C编写的守护程序会遇到类似的问题,该守护程序执行定期的TCP重新连接。在某个时候,getaddrinfo()突然开始返回错误。当我查看服务器时,没有发送任何DNS请求,并且将所需的条目添加到/ etc / hosts中无济于事。当然,重新启动有帮助,但是正如Xerxes正确指出的那样,这不是真正的解决方案。最初,我认为问题是由缺少freeaddrinfo()调用引起的,但是我无法通过测试应用程序重现它。无论如何,我已经向守护程序添加了适当的清理调用,并将对其进行密切监视。
Linulin

Answers:


13

PHP无法访问/ etc / hosts或/etc/resolv.conf:PHP中存在与该特定错误相关的长期存在的问题。解决方法是尝试重新启动Apache或任何正在调用PHP的程序,或者确保/ etc / hosts和/etc/resolv.conf可以被PHP读取。


重新启动就成功了!
GeoffreyF67,2009年

4
是的,但是下一次重启需要多长时间?我将进一步查找并找到问题的根本原因。
Xerxes,2009年

哇,我遇到了同样的问题,但是服务httpd重新启动显然是解决方案...但是我仍然不明白是什么原因导致的...
J_Wesker 2010年

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。

这个主题是几年前的,也许这个错误现在已经用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命令来解决此问题。

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.