在ubuntu上安装mysqlnd后,mysqli无法正常工作

时间:2016-06-08 04:51:51

标签: php mysqli ubuntu-14.04 mysqlnd

安装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
  • mysqli在apt-get
  • 安装php5-mysqlnd后仍然无法正常工作

2 个答案:

答案 0 :(得分:0)

  

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

错误消息表示系统上存在版本冲突。您安装了包含" libmysql"的软件包。和包#34; 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最后......如果你不知道这是什么,你不知道&#39 ; t想要使用它;不​​要让它混淆你,使用mysqlnd)

现在如果在安装mysqli之后没有php5-mysqlnd,这可能是由Ubuntu安装它引起的,但是没有启用模块,因为这个Ubuntu有一个工具php5enmod试试这个:< / p>

php5enmod mysqli  

答案 1 :(得分:-1)

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

extension=mysqlnd.so

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

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