|  RSS订阅  |  加入收藏

解决php_network_getaddresses: getaddrinfo failed错误的奇怪思路

PHP的多个内置函数均可触发php_network_getaddresses: getaddrinfo failed错误。本文中file_get_contents函数远程请求信息是触发本错误的原因可能来自于长城防火墙。
摘要

标题上面的思路其实是没有思路。问题的最终解决也是通过砍掉功能解决的,问题的原因或许来自于长城防火墙,是想解决而无法解决的问题。

那天一个做外贸的客户说,他们自己在美国购买了一个主机,希望我们帮她把网站部署到海外,方便客户访问。通过客户提供的主机信息大致检查了下环境,确认没问题后就答应了下来。着手帮客户迁移网站数据。迁移完成后,检查了下前台,各页面功能显示正常,因为比较忙,麻痹了下没登录后台看一下。问题在交付给客户后的两天客户告知后台登录不上了。

接到客户消息,赶紧尝试登录后台,发现确实无法登录成功。只好打开项目的调试模式,上传后,再次登录,看到错误提示为php_network_getaddresses: getaddrinfo failed。这个错误还蛮少见的,字面意思就是请求网络地址失败。这个错误本身并没有什么,只是有多个内置函数均能触发此问题。

由于网站前台这两天一直访问正常,唯独后台报错,出错的位置还是登录模块。都不用仔细想就知道肯定是登录请求IP对应的实体地址上造成的。因为登录模块只有一个file_get_contents可能触发此问题。所以排查保险起见,关了这部分功能,再次尝试登录,成功了。

现在的问题是file_get_contents请求的网络地址是国内的ip138呀,难不成ip138挂了?就顺手访问了一下ip138一切正常。这肯定是网络层了。在主机上ping了下ip138,果然不通。又尝试ping了几个国内常用站,都能正常,唯独ip138不行,应该是被墙掉了。

最后没辙,这就是个后台日志功能,原本和客户业务没什么关联,也是无关紧要的东西,最后跟客户说因为网络的关系,就把这个地址请求给关掉了。

如文章有用,给个赞助吧
  IP地址    PHP    
转载请注明出处,未经许可禁止商用!
发表评论
*依据《网络安全法》规定,您需实名认证后才能评论!