原提示:連接 MySQL 失敗: php_network_getaddresses: getaddrinfo failed: ��֪��������������
上面是自己遇到的問題,做一個記錄:
前陣子購買了一個雲虛擬主機,便宜,買之前特意問了支持PHP
而還送了一個MYSQL數據庫,查了一下是5.1的,當時覺得可能用不上。也就沒上心。
用PHP的框架Laravel寫了一個網站,寫完想要掛上去的時候,出了大問題了。
1.首先是laravel是二級目錄public為對外公開目錄,可能是為了安全考慮,但放在虛擬主機里面就麻煩大了。
無法指向二級目錄為默認首頁,試了好幾種方法,都以失敗告終。比如什么.htaccess靜態解析等,(這個沒成,也可能是我設置或者用的不對)
反正不行。最后沒辦法。把index.php及public所有文件復制到了根目錄了。靜態的css和js等文件也都搬出來了。
雖然安全上可能會有隱患,只能是暫時這樣用了。
2.接着雖然網站可以訪問了,靜態的頁面也沒有問題,但當訪問到新聞的時候,出問題了。無法讀取數據庫內容,一開始以為寫錯密碼啥的了,
不過也不可能啊。在本地測試好好的。線上就不用了呢?
開始和客服技術人員溝通,提交工單,提了整整4大片,無語了,最后還是沒有解決。沒法,自己測試吧。
3.先解決數據庫問題,測試一下是不是數據有問題,正好買的時候送的一個MYSQL的庫(后來才發現是5.1版本的)
就用這個測試一下,把數據導入進去。結果用navicat一連接,死活連接不上,坑呀。
又和客服溝通,就說沒有問題。我這換了IP,也用命令行連接,就是不行。終於放棄了。
得出結論:這東西應該是不讓外部人訪問。
既然連不上,只好老老實實用后台提供的phpmyadmin了,雖然不熟,湊和着用吧。
前前后后導數據,導不進去,總是報錯:SQLSTATE[42000]: Syntax error or access violation: 1115 Unknown character set: 'utf8mb4' (SQL: select * from `teachers`)
后來搜了下,原來mysql5.1不支持utf8mb4,又把導出來的sql文件手工編輯了一下。終於導入成功了。
4.寫了一個phpinfo的單獨數據庫連接代碼,測試了一下。終於連接成功,拿到了數據。再改一下連接別的數據庫,還是報錯。
只能證明,虛擬主機的空間,只能用自己的數據庫連接,外連,不行。
而里面的程序也只能連接自己的庫。
自己的庫只能用自己的后台里的phpmyadmin訪問。別的訪問也不行。
真坑。沒辦法,誰讓便宜了。按人家的走吧。
(主要的是客服也沒和我說呀,白浪費好長時間測試)