![PHP 抛出与 MySQL 插件版本不匹配的错误](https://linux22.com/image/113088/PHP%20%E6%8A%9B%E5%87%BA%E4%B8%8E%20MySQL%20%E6%8F%92%E4%BB%B6%E7%89%88%E6%9C%AC%E4%B8%8D%E5%8C%B9%E9%85%8D%E7%9A%84%E9%94%99%E8%AF%AF.png)
我在这里使用 Debian Jessie,并且有几个 PHP 页面显示错误:
A PHP Error was encountered
Severity: Warning
Message: mysqli::real_connect(): Headers and client library minor version mismatch. Headers:50553 Library:50630
Filename: mysqli/mysqli_driver.php
包裹php5
是5.6.30+dfsg-0+deb8u1
.
包裹php5-mysql
是5.6.30+dfsg-0+deb8u1
.
两者都是标准的 Debian 软件包,我没有手工编译组件的任何部分。
我尝试了apt update和upgrade,重新安装php5-mysql
,并重新启动Apache,但没有解决问题。
phpinfo()
还抱怨php5-mysql
.
该怎么办?
答案1
这似乎是一个错误包装php5-mysql
;我在这篇文章中找到了相关问题标头和客户端库次要版本不匹配。
虽然不是公认的答案,但该链接中最相关的答案是:
对于新的 MySQL 5.6 系列,您需要安装 php5-mysqlnd,而不是 php5-mysql。
删除此版本的 mysql 驱动程序
sudo apt-get remove php5-mysql 并安装它
sudo apt-get install php5-mysqlnd
然而,为了保持依赖的一致性,卸载php5-mysql
并不是最好的想法;这样做要好得多:
sudo apt-get install php5-mysqlnd
并让依赖项卸载php5-mysql
尽管安装php5-mysqlnd
.
来自packages.debian.org:软件包:php5-mysqlnd
php5 的 MySQL 模块(本机驱动程序)
该软件包提供直接从 PHP 脚本连接 MySQL 数据库的模块。它包括可用于连接所有版本的 MySQL 的通用“mysql”模块、适用于 MySQL 4.1 或更高版本的改进的“mysqli”模块,以及与 PHP 数据对象扩展一起使用的 pdo_mysql 模块。
完成后sudo apt-get install php5-mysqlnd
,相关页面开始正常工作,没有发出警告。
然而,仍在使用 /iso-8859-1 的另一个页面中的其他旧页面latin1
开始显示有趣的字母,例如被迫使用 UTF-8,因此我们必须在该服务器上回滚到php5-mysql
.