我對從AWS到GCE的系統遷移中遇到的問題感到有點沮喪。無法通過php在GCE實例與MySQL連接到MySQL數據庫
我有一個ec-2實例在亞馬遜網絡服務上運行,完美的工作和配置。
問題是,谷歌提供100000美元的信貸在Startup的特別計劃中,我公司的首席執行官要求進行遷移,所以我就是這樣。
我已經全部運行,幾乎完全配置在一個ubuntu 14.04 LTS實例中,我幾乎說了,因爲我無法實現一個簡單的任務,如連接到一個Mysql db :(我想我錯過了一些東西在某個地方,我的心靈得到了破壞,所以我需要你的幫助。
首先,我只在遠程服務器上有這個問題,我已經在本地測試了它幾百次,當然還有aws,目前它在生產狀態,所以我不知道是什麼或者正是問題是
我GCE配置:
OS:Ubun TU 14.04 LTS HHD:30GB SSD的持久性磁盤 CPU:2倍 RAM:7.5 GB 區:歐洲west1-C 靜態IP
所以,我安裝燈和phpMyAdmin的,所有的作品就像一個魅力。我禁止從遠程客戶端訪問Mysql數據庫,配置php和apache模塊。
Web應用程序是一個Rest API,基於PHP(Slim),就像我剛纔所說的那樣,現在正在使用AWS。
當我打電話給和不需要從數據庫檢索任何數據的端點時,它運行良好,當端點調用嘗試訪問數據庫時,問題就出現了。在這種情況下,請求永遠不會響應,它會一直加載直到我中止請求。這有點奇怪,因爲我可以通過phpmyadmin來操作所有的數據,這些數據以與mysqli相同的方式訪問數據庫。
如果我檢查了日誌,它們上沒有打印任何東西。只有當我更改「locahost」主機參數時,它會打印一條日誌說:「XXX.XXX.XXX.XXX上沒有MySQL數據庫」(IP)。
config.php文件
define('DB_USERNAME', 'user');
define('DB_PASSWORD', 'pass');
define('DB_HOST', 'localhost');
define('DB_NAME', 'db_name');
DbConnect.php
function connect() {
include_once dirname(__FILE__) . '/Config.php';
// Connecting to mysql database
$this->conn = new mysqli(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_NAME);
// Check for database connection error
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
/* change character set to utf8 */
if (!$this->conn->set_charset("utf8")) {
echo "Error loading character set utf8: " . $this->conn->error;
}
// returing connection resource
return $this->conn;
}
歡迎任何幫助!
我忘了提及,但我也試着到IP綁定。結果是類似的:對於本地主機,它始終在等待從未到來的響應,並且如果我嘗試通過my.cnf文件中的綁定IP訪問,則結果相同,無限響應等待。如果我解除綁定ip,它會返回一個異常,「地址XXX.XXX中沒有數據庫.........」「無論如何;-) – SvOzMaS
沒有防火牆阻止連接到您的服務器嗎?如ufw或iptables? https://help.ubuntu.com/12.04/serverguide/firewall.html – ironpilot