PHP php_network_getaddresses:getaddrinfo失败:没有这样的主机

时间:2011-11-21 10:06:19

标签: php fopen getaddrinfo

我遇到某个目标域的DNS问题。我正在使用fopen()(但与其他函数相同的问题)来检索图像,但是我收到此错误: Warning: fopen(): php_network_getaddresses: getaddrinfo failed: No such host is known

我能够从命令提示符ping或nslookup域,但由于某种原因,php抛出此错误。当我尝试fopen('http://www.google.com', r);或其他域名时,一切顺利。但上面提到的域根本不会解决PHP。我已刷新DNS,重新启动Apache,但仍然没有运气..

我尝试过:

  • Windows 7,Apache 2.2 PHP 5.3.6
  • Windows server 2008r2,Apache 2.2 PHP 5.3.6

什么导致这个单一域名无法解决?

7 个答案:

答案 0 :(得分:18)

IMO这是从OS和PHP解析名称的不同方法。

尝试:

echo gethostbyname("host.name.tld");

var_export (dns_get_record ( "host.name.tld") );

$dns=array("8.8.8.8","8.8.4.4");
var_export (dns_get_record ( "host.name.tld" ,  DNS_ALL , $dns ));

您应该找到一些DNS /解析器错误。

答案 1 :(得分:1)

您的“localhost”无法解析名称www.google.com,这意味着您的计算机无法/无法访问有效的DNS服务器。

尝试在该计算机的控制台上ping google.com以验证这一点。

答案 2 :(得分:1)

使用curl代替fopenfile_get_content更灵活地打开网页。

答案 3 :(得分:1)

<块引用>

getaddrinfo 失败:没有这样的主机是已知的

上述错误是由于.env文件中的Database Host (DB_HOST)错误造成的

打开.env文件并特别检查这个env变量

DB_HOST=localhost
DB_DATABASE=database_name
DB_USERNAME=database_username
DB_PASSWORD=database_password

答案 4 :(得分:0)

我发现一个奇怪的事情是必须设置环境变量SYSTEMROOT,否则{10}将在Windows 10上失败。

答案 5 :(得分:0)

您的目标域可能拒绝向您发送信息。这可以用作基于浏览器代理或任何其他标头信息的过滤器。 这是对机器人,搜寻器或任何有害应用程序的防御

答案 6 :(得分:-4)

导致此错误的原因是以下一行

include_once dirname(__FILE__) . './Config.php';

我设法意识到这是我添加线条的罪魁祸首:

//error_reporting(E_ALL | E_DEPRECATED | E_STRICT);
//ini_set('display_errors', 1);

到我所有的php文件。

要解决path issue我伪造的违规行:

include_once dirname(__FILE__) . '/Config.php';