2015-04-03 138 views
0

我在遠程主機上使用mysqli進行測試運行,使用IP地址正常工作,但沒有使用完全合格的域名。 DNS正確映射,我可以使用瀏覽器瀏覽頁面,也可以ping通成功mysqli通過IP地址連接但不使用主機名

$ mysqli = new mysqli(「www.testdomain.com」,「uname」,「passwd」,「database」);

有什麼建議嗎? MySQL是在CentOS 6

+1

排除'www.'。 – 2015-04-03 06:12:15

+1

不需要提供www,請刪除它。 – 2015-04-03 06:14:29

回答

0

首先運行,除非你有特別的原因,你必須testdomain.com之前添加www.(例如,testdomain.comwww.testdomain.com都指向不同的地址),請在您的主機名不www.再試一次。

嘗試nslookup testdomain.com在承載您的php應用程序的機器上(或者編寫一個php腳本並調用gethostbyname),查看php是否可以從給定的主機名中找到正確的IP地址。

如果您從上一步獲得的IP地址與您嘗試的IP地址不同,請嘗試解決DNS解析問題,或在承載您的PHP應用程序的機器上編輯/etc/hosts文件,並指出testdomain.com更正IP地址。有些服務器可能會綁定多個IP地址,但MySQL服務器只能監聽其中一臺服務器,請在主機上檢查/etc/mysql/my.cnf,查找bind 1.2.3.4(或其他主機名/ IP地址)。如果你還不知道,MySQL服務器默認只接受本地主機的連接。

如果您的MySQL服務器配置爲偵聽特定主機名/ IP地址,請嘗試綁定到0.0.0.0,以便您的MySQL服務器允許來自所有源的連接。也可能有防火牆阻止來自其他來源的連接。 Here's how to check firewall configuration on CentOS.

如果你的PHP腳本可以解決testdomain.com,請嘗試使用mysql命令行客戶端從託管你的PHP應用程序了機器連接到數據庫。 mysql -h testdomain.com -u uname -p。命令行客戶端可能會爲您提供有關連接失敗原因的更多信息。

我不確定您是否使用託管的VPS服務(例如Amazon EC2),或者您擁有自己的服務器計算機,但Amazon EC2確實提供了即裝即用防火牆,因此稱爲「安全組」。登錄到您的EC2控制檯,然後單擊左側面板上的「安全組」,然後您可以在右側面板上編輯防火牆設置。

相關問題