【问题标题】:How to enable mysqlnd for php?如何为 php 启用 mysqlnd?
【发布时间】:2012-10-21 00:05:50
【问题描述】:

我已经安装并运行了PHP(版本:5.3.17),我想切换到mysqlnd(在phpinfo中mysqlnd根本不存在)。

我读到要设置它,您需要更新./configure 命令:

./configure --with-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \

当我尝试使用yum install php-mysqlnd 安装它时,我收到一个错误:

---> Package php-mysqlnd.x86_64 0:5.3.17-1.26.amzn1 will be installed
--> Processing Conflict: php-mysql-5.3.17-1.26.amzn1.x86_64 conflicts php-mysqlnd
--> Finished Dependency Resolution
Error: php-mysql conflicts with php-mysqlnd

【问题讨论】:

标签: php mysql linux yum mysqlnd


【解决方案1】:

不知道我对你的理解是否正确...... 只需下载 php 的源代码(php-5.x.x.tar.gz),解压缩源并切换到该目录然后

 bash:/dir/of/your/source # ./configure --with-mysql=... and your other config params

之后就可以通过

 bash:/dir/of/your/source # sudo make && make install

【讨论】:

  • 我已安装并运行 PHP(版本:5.3.17)。在 phpinfo 中,mysqlnd 根本不存在。正如我上面写的,我读到我需要更新./configure 命令以进行运行时编译,但我不知道如何更改./configure 命令...
【解决方案2】:

从 PHP 5.4 开始,mysqlnd 库是所有 PHP MySQL 扩展的 php.net 编译时默认值。 - 参考:dev.mysql.com

使用XAMPP for Linux 1.8.1(PHP 5.4.7 附带)然后从源代码编译会更容易一些。

【讨论】:

    【解决方案3】:

    ./configure 命令是从源代码编译过程的一部分。

    您可以从源代码编译或通过包管理器安装。我想在你的情况下,包管理器更可取。

    正如包管理器所抱怨的那样,您不能同时安装 php-mysqlphp-mysqlnd

    所以你可以

    yum remove php-mysql
    

    之前

    yum install php-mysqlnd
    

    然后通过

    检查是否成功
    php -m | grep mysqlnd
    

    php -i | grep mysqlnd
    

    【讨论】:

    • yum remove php-mysql 会删除任何数据吗?我需要备份我的数据库吗?
    • @FelipeSchenone / 其他人,您可以在 yum shell 中执行此操作,以使用 mysqlnd 无缝更新 php-mysql: 1.yum shell 2.remove php-mysql 3.install php-mysqlnd 4.run 5.quit,然后重启Apache,它会加载原生驱动
    • 这只是用功能齐全的新驱动程序替换了旧的、蹩脚的 PHP MySQL 驱动程序。丝毫不影响数据库。
    • 使用 apt-get 代替 yum,它包含在 php[version]-mysql 包中。
    • 之后重启服务器:sudo service apache2 restart
    【解决方案4】:

    yum install php-mysqlnd 仅在 CentALT 和 remi repos 上可用。 Webtatic 也有一些很好的 php 存储库。它不是默认的(我使用的是 CentOS)。

    【讨论】:

      【解决方案5】:
      yum swap php-mysql php-mysqlnd
      

      【讨论】:

      • 你能解释一下你的答案吗?
      • 在 centos 7 机器上为我工作
      • 这太棒了!我什至不知道这个命令的存在!非常感谢,@iamarobot
      【解决方案6】:

      我可能会迟到,但它可能对其他人有所帮助。正如论坛其他地方已经说过的,如果对 get_result 之类的函数的调用抱怨它未定义,则需要安装 php-mysqlnd(this question)。我意识到做 yum install (centos) 会自动报告它要删除 php-mysql 和 phpmyadmin;不要接受这一点,因为您的 phpmyadmin 之后可能无法工作。相反,使用 yum shell 将立即接受命令并优雅地处理转换;在命令行中执行这些操作:

      # yum shell
      > remove  php-mysql
      > install php-mysqlnd
      > run
      > quit
      

      现在您可能必须重新启动 mariadb(很可能)和 httpd 服务。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多