0

安装 php5-mysqlnd 后,删除 php5-mysql。我安装了php5-mysql,去掉了php5-mysqlnd,我可以使用mysqli了。但是,我会收到此错误

mysqli_real_connect(): Headers and client library minor version mismatch. Headers:50541 Library:50627

根据 stackoverflow 上的其他答案,我需要安装 php5-mysqlnd 来解决这个问题。如何打破这个循环?

更新 1:

  • 尝试在 php.ini 中添加 extension = mysqlnd.so
  • 在 bash 中尝试 php5enmod mysqli 和 php5enmod mysqlnd
  • 通过 apt-get 安装 php5-mysqlnd 后 mysqli 仍然无法工作
4

2 回答 2

0

mysqli_real_connect():标头和客户端库次要版本不匹配。标头:50541 库:50627

该错误消息表示您的系统存在版本冲突。您安装了包含“libmysql”的包和链接到该库的包“php5-mysql”,同时使用了不同的版本。这表明 Ubuntu 打包时存在错误(不太可能),或者您弄乱了不同的包源。准确地说:PHP 认为它会使用 libmysql 5.5,而安装的是 5.6。

无论如何,对于问题的另一部分:php5-mysqlnd 和 php5-mysql 都包含不同的 MySQL 用户空间 API 库(mysql、mysqli 和 pdo_mysql),一个包是“传统”包,其中这些模块使用 libmysql,另一个是这些模块使用 myslqnd 的“现代”模块。解释差异的文档在http://php.net/manual/en/mysqlinfo.library.choosing.php简短形式是:使用 mysqlnd 除非您有非常具体的要求(即使用 libmysld,最后带有 d .. 如果你不知道这是什么你不想使用它;不要让它混淆你,使用 mysqlnd)

mysqli现在,如果安装后没有,php5-mysqlnd这可能是由于 Ubuntu 安装它,但没有启用模块造成的,对于这个 Ubuntu 有一个工具,php5enmod试试这个:

php5enmod mysqli  
于 2016-06-09T10:44:59.707 回答
-1

您可能需要启用 mysqlnd 扩展。我最近遇到了这个问题(安装 php5-mysqlnd 后所有引用 mysqli 都被破坏了),并通过在我的 php.ini 底部添加以下行来修复它:

extension=mysqlnd.so

您可以在 phpinfo() 的输出中找到 php.ini 的位置。

另请注意,您需要重新启动网络服务器才能使这些更改生效。

于 2016-06-08T04:54:39.657 回答