DNS无法在PHP中运行(但一般情况下)

时间:2017-03-21 11:39:07

标签: php dns fastcgi

以下脚本:

<?php
 $dnsrecs = dns_get_record('google.com'); foreach($dnsrecs as $dnsrec){ foreach($dnsrec as $label=>$val){ echo $label.':'. $val . '<br>'; } }


  echo file_get_contents('https://google.com'); 


?>

返回DNS记录列表,但最终在file_get_contents上失败,尽管phpinfo()说:

allow_url_fopen On  On
allow_url_include   Off

出现以下错误:

  

PHP消息:PHP警告:file_get_contents(https://google.com):无法打开流:php_network_getaddresses:getaddrinfo failed:在读取响应头时,第5行的/var/www/a.php中没有与主机名关联的地址from upstream,client:152.66.34.10,server:xxx,request:“GET /a.php HTTP / 1.1”,上游:“fastcgi:// unix:/var/run/php-fpm-www.sock:”,主持人:“xxx”

服务器上的DNS解析工作正常,与nginx运行的用户相同:

# sudo -u www-data host google.com
google.com has address 216.58.212.142
google.com has IPv6 address 2a00:1450:400e:800::200e
google.com mail is handled by 50 alt4.aspmx.l.google.com.
google.com mail is handled by 10 aspmx.l.google.com.
google.com mail is handled by 30 alt2.aspmx.l.google.com.
google.com mail is handled by 40 alt3.aspmx.l.google.com.
google.com mail is handled by 20 alt1.aspmx.l.google.com.

我的PHP版本是最近的:

# php --version
PHP 5.5.9-1ubuntu4.21 (cli) (built: Feb  9 2017 20:54:58) 
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
    with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies

我通过php5-fpm运行它,它似乎与此有关,因为sudo -u www-data php a.php正常工作。

我的php.ini文件在这里:http://pastebin.com/qZePJdT5 我的phpinfo就在这里:http://pastebin.com/cAWuu8wr

感谢。

2 个答案:

答案 0 :(得分:2)

我们在Goolge公共DNS服务器上看到了这个问题。我们通过简单地重启PHP-FPM来修复它。这个问题一直是一些推特的主题:

https://twitter.com/laravelphp/status/844181376224165890

然而,似乎并不是DigitalOcean具体的。

答案 1 :(得分:0)

重新启动服务器(linux)并且不做任何其他修改。