PHP错误:php_network_getaddresses:getaddrinfo失败:(从其他站点获取信息时。)

时间:2011-06-08 07:31:25

标签: php warnings

尝试从外部源获取信息,我收到以下错误:

  

警告:php_network_getaddresses:getaddrinfo失败:行中的名称解析暂时失败#...

昨天一切都很好,所以这个脚本发生了什么,哪个不能正常工作并给我上面的错误?解决这个问题的任何解决方案或提示?

$uri = "http://api.hostip.info/?ip=$ip&position=true";

$dom->load($uri);

我也尝试过将DNS转换为IP,然后收到警告:failed to open

$uri = "174.129.200.54/?ip=$ip&position=true";

我尝试删除http,但仍然遇到上述错误。

10 个答案:

答案 0 :(得分:31)

这是因为您无法解析主机名 也许是DNS问题,主机无法访问......

尝试使用IP地址而不是主机名... ping这个主机名... nslookup it ...

答案 1 :(得分:7)

在以下httpd.conf文件中,正确配置ServerName

/etc/httpd/conf/httpd.conf

如下所示:

ServerName 127.0.0.1:80

ServerName sitename

这解决了我面临的类似问题。

答案 2 :(得分:3)

我认为您正在使用的缓存DNS服务器行为不正确(或者您正在解析的域的DNS服务器无法正常工作)。你可以尝试解决以前的可能性。

您的网络适配器上是否至少注册了2个名称服务器?您可以随时更换计算机以使用不同的缓存DNS服务器来排除这种情况。试试谷歌:

8.8.8.8
8.8.4.4

答案 3 :(得分:1)

如果您可以对正在尝试连接的远程服务器上的暂时中断进行折扣,那么这只会使本地网络配置成为问题。

使用IP地址而不是主机名只能用于远程主机上的默认域。

尝试使用www.google.com(或其IP地址)时会发生什么?如果你stil无法连接,那么它与你的服务器和外部世界之间的网络有关。

答案 4 :(得分:0)

虽然这是一个旧线程,但最近我在CentOS 7中运行nslookup时遇到了同样的错误,谷歌搜索引导我进行SO中的一些讨论,包括这个。但是,单独将名称服务器条目添加到/etc/resolv.conf没有帮助,因为在使用与以太网IP配置关联的eth配置文件中的默认DNS名称服务器的NetworkManager中,resolv.conf中的名称服务器值被覆盖。

如@m-canvar所述,在/etc/resolv.conf中设置以下条目

>>> from iteration_utilities import grouper

>>> list(grouper([1, 2, 3], 2))  # as single
[(1, 2), (3,)]

>>> list(grouper([1, 2, 3], 2, truncate=True))  # ignored
[(1, 2)]

>>> list(grouper([1, 2, 3], 2, fillvalue=None))  # padded
[(1, 2), (3, None)]

为了防止NetworkManager覆盖这些条目,有两种方法:

选项1:在与IPv4 / IPv6配置文件关联的eth配置文件中设置NM_CONTROLLED = no。

选项2:禁止运行NetworkManager服务。

search yourdomain.com
nameserver 8.8.8.8
nameserver 4.2.2.1
nameserver 8.8.4.4

有关详细信息,请参阅我的enter image description here

答案 5 :(得分:0)

尽管我没有使用这个确切的函数,但我遇到了同样的错误。

就我而言,我只需要删除协议。

代替$uri = "http://api.hostip.info/?ip=$ip&position=true";

使用$uri = "api.hostip.info/?ip=$ip&position=true";

之后效果很好

答案 6 :(得分:0)

就我而言,这是由wp cli发布的,问题是我没有安装php7.3-curl。固定为:apt-get install -y --quiet php7.3-curl

答案 7 :(得分:0)

我认为您应该尝试用api.hostip.info/?ip=$ip&position=true替换php7.3-curl。希望对您有帮助

答案 8 :(得分:0)

我遇到了这个问题,在连接数据库时,未定义用于连接数据库的变量。

原因: php尝试使用数据库主机的未定义变量(localhost / 127.0.0.1 / ...任何其他IP或域),但无法跟踪域。

解决方案:确保正确定义了db host

答案 9 :(得分:0)

我在适用于Ubuntu的Docker上遇到了类似的问题。这是DNS问题。您必须将Google公共DNS设置添加到网络中。添加这些设置的说明取决于操作系统。就我而言,我使用的是Ubuntu,因此我是通过网络管理器添加的。访问this网站以获取更多信息。

enter image description here