今天,一台测速VPS的PHP程序运行出现了问题,一直以来都运行得好好的,怎么会突然运行不了呢?首先我想到的是Web服务器IIS的问题,于是重启IIS,但是并不凑效;随后重启服务器,但是问题依旧,这让我一时不知道怎么处理为好。于是,开始分析起错误日志起来。

报错提示:gethostbyname failed

其实PHP程序执行并没有问题,说明PHP环境是没有被破坏的。出问题的是某些程式(函数)不能执行,报错提示如下:

Warning: get_headers() [function.get-header]: php_network_getaddresses: gethostbyname failed. errno = 0

Warning: get_headers(http://m.baidu.com) [function.get-header]: failed to open stream: php_network_getaddresses: gethostbyname failed. errno = 0

Notice: Undifined offset:1

Warning: file_get_contents() [function.file-get-contents]: php_network_getaddresses: gethostbyname failed. errno = 0

Warning: file_get_contents() [function.file-get-contents]: failed to open stream: php_network_getaddresses: gethostbyname failed. errno = 0

根据报错提示,PHP运行出错的地方是get_headers()file_get_contents(),而原因均为gethostbyname失败。意思是获取不了域名主机,即是域名解析失败了。

解决方法

域名解析失败,问题找到了,但是原因是什么,以及如何解决呢?

根据以往的经验,服务器不能解析域名,原因多是DNS的设置的问题,于是就从DNS的设置做起。

服务器的DNS原先是一个当地联通的DNS,我现在把服务器的DNS设为8.8.8.8这个公共DNS看看。

然后,在dos里ping一下域名,看到可以ping通了。

 

检测网络连通与否

再次访问PHP程序,终于没问题了!

总结

本次经验是,当在服务器访问不了外网网站时,试试更改下服务器的DNS,DNS对网络的连通性起到十分重要的作用。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。