PHP php_network_getaddresses: getaddrinfo failed: Name or service not known

昨天突然业务的官网和微信web服务打不开了,提示:

SQLSTATE[HY000][2005] Unknown MYSQL server host ‘xxx.mysql.rds.aliyuncs.com’(2)

写了个phpinfo()查看了下PDO和PDO_MYSQL,然后extension_loaded()也是一切正常。

手动访问了下RDS,正常;在ECS上ping了RDS域名,有回应;找不到原因就发了工单(屁用没有= =)。

后来发现把rds域名对应的ip填入DB配置文件,就可以访问了。


原本天真的以为问题解决了,几分钟又收到了消息,说微信web服务无法正常使用。

打开 微信开发者工具 访问了下,发现JSSDK签名没有成功。因为JSSDK签名是调用远程的API域名获取的,所以一瞬间发觉是不是现在PHP无法访问任何域名,然后写了一个测试页运行下我的猜想:

1
2
3
<?php
echo file_get_content('http://www.baidu.com');
// 报错 php_network_getaddresses: getaddrinfo failed: Name or service not known

把这段报错复制到网上搜索了下,建议重启PHP-FPM。

重启之后,问题解决。

后记:写了这么久的PHP第一次遇到这种问题,我猜测是阿里云内部DNS异常导致的问题。


评论区