PHP鏈接MySQL主機127.0.0.1與localhost,使用mysql -u root -p 可以進入MySQL操作界面,直接使用/usr/local/php5/bin/php /web/test.php執行可以連上數據庫.
apache也重啟了,一樣無效.
疑點:為何網頁執行失敗,命令執行卻成功.
這下就郁悶了,使用php命令直接執行就成功,通過網頁執行就失敗,難道是apache導致?網上搜索了大堆資料也沒找到解決方案,重新編譯安裝apache問題依舊.
把localhost改成127.0.0.1成功.把localhost改成127.0.0.1后竟然連接成功了,開始陷入思考困局:localhost失敗127.0.0.1卻成功?
ping localhost 地址是127.0.0.1沒錯,打開hosts加入:127.0.0.1 qttc,使用qttc當主機連接也正常,唯獨就不認localhost.
localhost連接方式不同導致,為了了解PHP連接數據庫時,主機填寫localhost與其它的區別閱讀了大量資料,最后得知.
當主機填寫為localhost時mysql會采用 unix domain socket連接,當主機填寫為127.0.0.1時mysql會采用tcp方式連接.
這是linux套接字網絡的特性,win平臺不會有這個問題.
解決方法:在my.cnf的[mysql]區段里添加:protocol=tcp,保存重啟MySQL,問題解決.
新聞熱點
疑難解答