用虛擬主機面板管理系統的注意了,尤其是amh面板!!
這幾天折騰死我了,裝了amh面板之後,所有用到域名解析的函數全部失敗,比如gethostbyname, curl, 發郵件等等功能,只要url是域名的,全部失敗,換成ip地址就可以,一開始還以為是dns的問題,查了一下,用的是8.8.8.8和8.8.4.4,而且ping那些域名也能正確返回ip地址,nslookup也正常,最TM詭異的是,用terminal命令行終端運行:
# php -r "echo(gethostbyname('www.baidu.com'));";
居然是可以返回ip的,於是把目標瞄准amh,應該是它的問題了,上網找了很久很久,問過很多人,都沒有找到解決方案,後來無意中了解了chroot這個玩意,百度了一下,發現這東西是將系統環境切換到指定的一個目錄,目錄外的系統環境都用不了了,包含dns解析,開始慢慢明朗了,於是查了一下解析dns需要用到哪些lib,主要是這三個:
libnss_dns.so.2 libnss_files.so.2 libresolv.so.2
現在,重點來了,amh面板的,遇到相同問題的看過來,cd到你的虛擬主機目錄:/home/wwwroot/xxx.com/,下面有etc, lib, usr, web, tmp等等目錄,將上面說的三個lib copy到你的虛擬主機目錄的lib下
# cp /lib/i386-linux-gnu/libnss_* /home/wwwroot/xxx.com/lib/
現在再試一下,是不是成功了?
唉,說多了都是淚啊...
-----------------------------
PS: 最後一步完成後記得重啟php,amh的,直接命令:
# amh php restart xxx.com