【问题标题】:file_get_contents(): php_network_getaddresses: getaddrinfo failedfile_get_contents(): php_network_getaddresses: getaddrinfo 失败
【发布时间】:2014-04-30 11:02:35
【问题描述】:

我正在尝试使用 cron 作业将一些值从一台服务器更新到另一台服务器。我使用 file_get_contents()。

奇怪的是,这偶尔会失败。一分钟有效,一分钟无效。 我收到这两个错误:

PHP 警告:file_get_contents(): php_network_getaddresses: getaddrinfo failed: Name or service not known

PHP 警告:file_get_contents():未能打开流:php_network_getaddresses:getaddrinfo 失败:名称或服务未知

和:

PHP 警告:file_get_contents(): php_network_getaddresses: getaddrinfo failed: No address associated with hostname

PHP 警告:file_get_contents():未能打开流:php_network_getaddresses:getaddrinfo 失败:没有与主机名关联的地址

我已登录遇到此问题的服务器。使用 ping 或 traceroute 可以正常工作,因此我已经排除了 DNS 问题。为了确定,我还添加了 google DNS 名称服务器。使用完全相同代码的第三台服务器没有这个问题,因此它看起来是“调用”端的问题,而不是“响应”端的问题。在这种情况下,不能用 IP 替换主机名。

有人知道怎么解决吗?

【问题讨论】:

标签: php dns file-get-contents


【解决方案1】:

就我而言,问题在于 Apache 在启动时从 /etc/resolv.conf 获取 DNS 条目。当我启动我的 Apache 时,网络还没有设置好。重新启动 Apache(配置网络后)为我解决了这个问题。

我在我的博文http://diogomelo.net/blog/16/Warning-file_get_contents-php_network_getaddresses-getaddrinfo-failed-No-address-associated-with-hostname中详细解释了这个案例

【讨论】:

  • 谢谢先生,这终于是我的解决方案了。
  • 我会第三:这也是我的问题。可能是因为我在 VM 上进行开发,所以当我恢复 VM 时情况会发生变化。
【解决方案2】:

名称查找有时在 cron 作业中运行时似乎失败。我只在 /etc/hosts 中看到过名称,但我没有测试过 DNS 名称。

我看到它发送电子邮件和 SMTP 连接超时。

我不知道确切的原因,但就我而言,我的 SMTP 代码连接到 127.0.0.1 而不是 localhost,问题就消失了。

【讨论】:

    【解决方案3】:

    这是因为第二台服务器的连接限制,我相信您为 cron 作业设置了较短的时间间隔。 如您所知,服务器控制来自每个 IP 的连续连接。 您可以选择更长的时间间隔来解决此问题。

    【讨论】:

    • 这是不正确的。错误明确指出,名称解析失败。
    猜你喜欢
    • 2023-01-24
    • 2016-10-16
    • 1970-01-01
    • 1970-01-01
    • 2011-02-22
    • 2014-02-18
    • 2020-03-02
    • 2021-03-28
    • 2023-03-10
    相关资源
    最近更新 更多