PHP:file_get_contents()给我“名称或服务未知”

时间:2013-09-19 20:55:37

标签: php nginx dns file-get-contents

好的,这个问题在互联网上已被多次询问,但我没有找到解决问题的任何解决方案。

我将使用以下代码获取一些JSON数据:

$response = file_get_contents('http://www.domain.com/path/to/json');

它一直在绊倒以下错误:

  

file_get_contents():php_network_getaddresses:getaddrinfo失败:   姓名或服务未知

我在 Nginx 1.2.6 php-fpm 上使用 PHP 5.4.4 运行 Debian

这是我目前的疑难解答:

  1. 该网址存在,并在浏览器中显示有效结果。
  2. 我确保在php.ini中启用了allow_url_fopen
  3. 我已更改为/etc/resolv.conf中的Google公共DNS。
  4. 执行ping google.com工作。
  5. 切换到http://0.0.0.0/path/to/json有效但不合适。
  6. 我有几个域指向同一台服务器,同样的问题是独立发生的。
  7. 我对domain中的/etc/resolv.conf有点关注,是不是?

    # Automatically generated by OnApp (2.3.0-29)
    domain localdomain
    
    # Original DNS
    #nameserver 10.0.10.10
    #nameserver 10.0.11.11
    
    # Google Public DNS
    nameserver 8.8.8.8
    nameserver 8.8.4.4
    

    感谢任何形式的帮助。

3 个答案:

答案 0 :(得分:1)

我讨厌这样说,但问题解决了;我刚刚升级了Debian软件包(apt-get upgrade),问题就消失了。但是,不知道原因令人沮丧。

谢谢大家的时间!

答案 1 :(得分:0)

这很可能是DNS问题。如果IP工作但域存在问题,您应该查看DNS。这就是“名称或服务未知”的暗示。 如果可以,请使用不同的名称服务器。我认为google的dns无法将你的域名转换为ip。

答案 2 :(得分:0)

我用两种方式解决了它,要么以root用户模式运行php(或apache),要么更新你的debian包。可能是debian7u5或者更新4有这个bug。