PHP中使用localhost連接Mysql不成功的解決方法
發(fā)現(xiàn)問題
昨天在幫同事編譯安裝Linux環(huán)境時,遇到一個問題:
WEB服務(wù)器是apache,數(shù)據(jù)庫是MySQL。
于是寫了一個測試連接數(shù)據(jù)庫的PHP頁面:
打開 http://localhost/test.php 測試
提示:Can't connect to local MySQL server through socket...
檢查環(huán)境正常
以為是數(shù)據(jù)庫沒有啟動,于是查看一下進(jìn)程,MySQL在進(jìn)程里,重啟了一下MySQL.
使用mysql -u root -p 可以進(jìn)入MySQL操作界面
直接使用/usr/local/php5/bin/php /web/test.php執(zhí)行可以連上數(shù)據(jù)庫
apache也重啟了,一樣無效
疑點:為何網(wǎng)頁執(zhí)行失敗,命令執(zhí)行卻成功
這下就郁悶了,使用php命令直接執(zhí)行就成功,通過網(wǎng)頁執(zhí)行就失敗。難道是apache導(dǎo)致?網(wǎng)上搜索了大堆資料也沒找到解決方案,重新編譯安裝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當(dāng)主機(jī)連接也正常,唯獨就不認(rèn)localhost。
localhost連接方式不同導(dǎo)致
為了了解PHP連接數(shù)據(jù)庫時,主機(jī)填寫localhost與其它的區(qū)別閱讀了大量資料,最后得知:
當(dāng)主機(jī)填寫為localhost時mysql會采用 unix domain socket連接
當(dāng)主機(jī)填寫為127.0.0.1時mysql會采用tcp方式連接
這是linux套接字網(wǎng)絡(luò)的特性,win平臺不會有這個問題
解決方法
在my.cnf的[mysql]區(qū)段里添加
保存重啟MySQL,問題解決!
- Php連接及讀取和寫入mysql數(shù)據(jù)庫的常用代碼
- 測試PHP連接MYSQL成功與否的代碼
- php基礎(chǔ)之連接mysql數(shù)據(jù)庫和查詢數(shù)據(jù)
- PHP連接和操作MySQL數(shù)據(jù)庫基礎(chǔ)教程
- PHP連接MySQL查詢結(jié)果中文顯示亂碼解決方法
- php中mysql連接方式PDO使用詳解
- PHP連接MYSQL數(shù)據(jù)庫的3種常用方法
- php開啟mysqli擴(kuò)展之后如何連接數(shù)據(jù)庫
- PHP同時連接多個mysql數(shù)據(jù)庫示例代碼
- php7連接MySQL實現(xiàn)簡易查詢程序的方法
相關(guān)文章
PHP使用array_merge重新排列數(shù)組下標(biāo)的方法
這篇文章主要介紹了PHP使用array_merge重新排列數(shù)組下標(biāo)的方法,以實例形式較為詳細(xì)的分析了array_merge的功能,及針對數(shù)組下標(biāo)進(jìn)行重新排列操作的實現(xiàn)技巧,需要的朋友可以參考下2015-07-07也談php網(wǎng)站在線人數(shù)統(tǒng)計
db層: db_online.PHP //該函數(shù)使用戶自己在線,并且檢查其他用戶的在線情況2008-04-04