【发布时间】:2017-03-22 11:56:11
【问题描述】:
我的 PHP 应用程序和 DNS/Apache 遇到了一个非常奇怪的问题。 连接到外部服务(如电子邮件、支付等)的 PHP 应用程序突然停止工作。 经过一段时间的故障排除后,我们发现这是一个 DNS 问题。替换我们连接的服务器的 IP 地址将使应用程序正常工作。
但是,DNS 在服务器本身上运行良好。我们可以使用名称而不是 IP 来 ping、host、wget 等。 我在 PHP 中创建了一个简单的测试来测试它是否是 PHP 问题:
<?php
$handle = @fopen("http://www.google.com", "r");
if ($handle) {
while (($buffer = fgets($handle, 4096)) !== false) {
echo $buffer;
}
if (!feof($handle)) {
echo "Error: unexpected fgets() fail\n";
}
fclose($handle);
}
这也很好。 重新启动 apache 服务可以解决一段时间的问题,但几个小时后问题再次发生。 检查 syslog、apache 日志和 php 日志我找不到任何可能导致它的原因。
我检查了 /etc/hosts.deny、/etc/hosts、防火墙和 /etc/nsswitch。
我们的apache是版本:Apache/2.4.7 我们使用 PHP 5.5.9
关于什么可能导致 DNS 停止为 PHP/Apache 工作的任何想法?
感谢您的帮助
【问题讨论】:
-
What OS? 最近出现了一些影响 PHP dns 查找的 Ubuntu 错误,这似乎可以通过重启 apache 来解决
-
嗨,马克,操作系统是 14.04.1 Ubuntu。我会检查你在那里发布的这个链接!谢谢