2013-07-22 60 views
2

我正在嘗試設置mysqlnd_ms,以便它能夠執行讀取從站數據庫和寫入主數據庫的目的。但是,當httpd重新啓動時,我收到了這個錯誤。mysqlnd_ms錯誤 - getaddrinfo失敗,mysqlnd_global_stats未知

PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/mysqlnd_ms.so' - /usr/lib64/php/modules/mysqlnd_ms.so: undefined symbol: mysqlnd_global_stats in Unknown on line 0 

我運行在Amazon EC2 64 AMI實例,並運行在一個新的實例如下命令:

sudo yum update 

sudo yum install -y gcc make gcc-c++ 

sudo yum install -y httpd24 php54 

sudo yum install -y php54-devel php54-mysqlnd php54-mbstring 

sudo pecl install mysqlnd_ms 

php -m | grep mysql 

我的php.ini包括以下補充:

mysqlnd_ms.enable=1 
mysqlnd_ms.force_config_usage=1 
mysqlnd_ms.config_file=/etc/mysqlnd_ms.ini 
extension=mysqlnd_ms.so 

mysqlnd_ms.ini文件有:

{  
"appname": { 
    "master": { 
     "master_0": { 
      "host": "1.2.3.4", 
      "db": "dbname", 
      "user": "dbuser", 
      "password": "dbpswd", 
      "socket" : "\/var\/lib\/mysql\/mysql.sock" 
     } 
    }, 
    "slave": { 
     "slave_0": { 
      "host": "12.22.32.42", 
      "db": "dbname", 
      "user": "dbuser", 
      "password": "dbpswd", 
      "socket" : "\/var\/lib\/mysql\/mysql.sock" 
     } 
     } 
} 
} 

連接時,我做的事:

$mysqli = new mysqli("appname", "dbuser", "dbpswd", "schema"); 

做上述引發以下錯誤:

ERROR: SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known 

mysqli的,MySQL和PDO都啓用服務器上。

如果我們直接改變它的主機名,它的工作原理:

$mysqli = new mysqli("1.2.3.4", "dbuser", "dbpswd", "schema"); 

我怎樣才能得到mysqlnd_ms正常工作?

+0

已'appname'被註冊到DNS系統,或者至少與服務器的'hosts'文件?如果沒有,那麼服務器就無法翻譯'appname' - >'1.2.3.4'。 –

+0

不,這會導致設置mysqlnd_ms失敗。它應該工作的方式是代碼引用「appname」,然後mysqlnd_ms掛鉤到它自己的配置文件中,爲「appname」(基於sql查詢)選擇主服務器或從服務器。檢查一個例子:http://ca2.php.net/manual/en/mysqlnd-ms.quickstart.usage.php – MisRoy

回答

3

問題解決!!!

要解決此問題:從php.ini文件

  1. 創建一個名爲新文件「/等

mysqlnd_ms.enable=1

mysqlnd_ms.force_config_usage=1

mysqlnd_ms.config_file=/etc/mysqlnd_ms_cfg.ini

extension=mysqlnd_ms.so

  1. 刪除線/php.d/mysqlnd_ms.ini「並將這些行放在那裏

  2. 刷新的httpd

相關問題