file_get_contents():php_network_getaddresses:getaddrinfo失败

13
我正在尝试使用cron job将一个服务器的一些值更新到另一个服务器,我使用file_get_contents()。奇怪的是,这有时会失败。它有时能工作,有时不能工作。我收到了这两个错误: PHP警告:file_get_contents():php_network_getaddresses:getaddrinfo failed: Name or service not known PHP警告:file_get_contents():failed to open stream:php_network_getaddresses:getaddrinfo failed: Name or service not known 和: PHP警告:file_get_contents():php_network_getaddresses:getaddrinfo failed: No address associated with hostname PHP警告:file_get_contents():failed to open stream:php_network_getaddresses:getaddrinfo failed: No address associated with hostname 我已经登录遇到此问题的服务器。使用ping或traceroute都很好,所以我排除了DNS问题。我还添加了谷歌DNS名称服务器以确保。使用完全相同代码的第三个服务器没有此问题,因此看起来是在“呼叫”端而不是“响应”端出现问题。在此情况下,替换主机名为IP地址不是一个选项。有人知道如何解决这个问题吗?

这种情况发生在实际服务器上吗?如果它们是托管服务器,我会向他们的支持团队报告此问题。 - hek2mgl
3个回答

12
在我的情况下,问题在于Apache在启动时从/etc/resolv.conf获取DNS条目。当我启动Apache时,网络还未设置。在网络配置完成后重新启动Apache解决了我的问题。
我在我的博客文章中详细解释了这个案例

谢谢您,先生,那终于是我的解决方案。 - Sam Tuke
我也遇到了同样的问题,可能是因为我在虚拟机上进行开发,当我恢复虚拟机时,一些东西会发生变化。 - Ethan Brown

1
有时在cron作业中运行时,名称查找似乎会失败。我只看到过在/etc/hosts中出现的名称,但我没有测试DNS名称。
我在发送电子邮件和SMTP连接超时时遇到了这个问题。
我不知道确切的原因,但在我的情况下,我让我的SMTP代码连接到127.0.0.1而不是localhost,问题就解决了。

0

这是由于第二个服务器的连接限制,我相信您已经为cron作业设置了短时间间隔。

正如您所知,服务器控制每个IP的连续连接。

您可以选择更长的时间间隔来解决这个问题。


1
这是不正确的。错误明确指出,名称解析失败了。 - Rauli Rajande

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接