【问题标题】:mysqlnd_ms error - getaddrinfo failed, mysqlnd_global_stats in Unknownmysqlnd_ms 错误 - getaddrinfo 失败,mysqlnd_global_stats 未知
【发布时间】:2013-07-21 15:44:18
【问题描述】:

我正在尝试设置 mysqlnd_ms,以便它达到在从属数据库上读取和在主数据库上写入的目的。但是,重新启动 httpd 时出现此错误。

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 x64 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查询)。查看示例:ca2.php.net/manual/en/mysqlnd-ms.quickstart.usage.php

标签: php amazon-ec2 mysqli ec2-ami mysqlnd


【解决方案1】:

问题解决了!!!

要解决此问题:

  1. 删除行:

mysqlnd_ms.enable=1

mysqlnd_ms.force_config_usage=1

mysqlnd_ms.config_file=/etc/mysqlnd_ms_cfg.ini

extension=mysqlnd_ms.so

来自 php.ini 文件

  1. 创建一个名为“/etc/php.d/mysqlnd_ms.ini”的新文件并将这些行放入其中

  2. 重新加载httpd

【讨论】:

    猜你喜欢
    • 2016-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-26
    • 1970-01-01
    • 1970-01-01
    • 2017-11-19
    相关资源
    最近更新 更多