尝试从外部源获取信息,我收到以下错误:
警告: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
,但仍然遇到上述错误。
答案 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
答案 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网站以获取更多信息。