php不能解析網域的解決方法:1、用terminal命令列終端機執行「# php -r "echo(gethostbyname('...'));";」指令;2、將「libnss_dns .so.2 libnss_files.so.2 libresolv.so.2」複製到虛擬主機目錄的lib下;3、透過「# amh php restart xxx.com」重啟php即可。
本教學操作環境:linux5.9.8系統、PHP8.1版、Dell G3電腦。
php不能解析網域怎麼辦?
關於PHP中解析網域不成功的問題
用虛擬主機面板管理系統的注意了,尤其是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
推薦學習:《PHP影片教學》
以上是php不能解析網域名稱怎麼辦的詳細內容。更多資訊請關注PHP中文網其他相關文章!