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正常工作?
已'appname'被註冊到DNS系統,或者至少與服務器的'hosts'文件?如果沒有,那麼服務器就無法翻譯'appname' - >'1.2.3.4'。 –
不,這會導致設置mysqlnd_ms失敗。它應該工作的方式是代碼引用「appname」,然後mysqlnd_ms掛鉤到它自己的配置文件中,爲「appname」(基於sql查詢)選擇主服務器或從服務器。檢查一個例子:http://ca2.php.net/manual/en/mysqlnd-ms.quickstart.usage.php – MisRoy