通过 Apache2 运行 PHP 脚本时出现 DNS 错误

通过 Apache2 运行 PHP 脚本时出现 DNS 错误

从我目前读到的内容来看,这似乎是 Apache2 和 resolv.conf 的问题。

我们在 Ubuntu 14.04 LTS 上运行了一个基于 PHP 的 Web API,它有时会与另一个 Web API 通信。它已经顺利运行了一年多 - 直到昨天。

昨天(星期三)早上,我们在第二次连接时开始遇到异常 - PHP 产生了错误:

getaddrinfo "No address associated with hostname"

这是 PHP 表示无法通过 DNS 解析主机名的方式。

我登录到服务器并运行了nslookupPHP 脚本请求的域:它已解析。

我进入 PHP 交互模式并调用dns_get_record()PHP 脚本所请求的域:它已解析。

在互联网上搜索了一番后,我只能找到一篇晦涩难懂的帖子,说其他人也遇到了这个问题,因为 Apache 在 resolv.conf 之前加载,所以通过重新启动/重新加载 Apache 解决了这个问题。我重新加载了 Apache 服务,一切正常。

我们今天早上遇到了同样的问题......重新加载再次解决了该问题。


现在 - 服务器已经运行了 23 天。Apache 服务于周日早上重新启动,可能是在进行一些自动更新之后。该问题于周三早上首次出现,并于周四早上(今天早上)再次出现。

Apache 为何突然忘记了如何解析这个已经使用了一年的 Web 服务域名?


  • Ubuntu 14.04.5 LTS
  • PHP 5.5.9-1ubuntu4.21
  • 阿帕奇/2.4.7

答案1

听起来你正在经历USN-3239-2:GNU C 库回归Ubuntu 安全更新破坏了 DNS 查找。

通过将系统更新至以下软件包版本可以解决此问题:

Ubuntu 16.04 LTS:libc6 2.23-0ubuntu7

Ubuntu 14.04 LTS:libc6 2.19-0ubuntu6.11

Ubuntu 12.04 LTS:libc6 2.15-0ubuntu10.17

要更新您的系统,请按照以下说明操作:https://wiki.ubuntu.com/Security/Upgrades

标准系统更新后,您需要重新启动计算机以进行所有必要的更改。

也可以看看glibc 更新导致 NSS ABI 中断在 Launchpad 上。

相关内容