这两天用阿里云服务器重新部署网站服务器后,打开某php页面出现了如下警告:Warning: mysql_connect(): Headers and client library minor version mismatch. Headers:50547 Library:50631 in /XXX(某某目录)/wp-db.php on line 1520,虽然是警告,但是有的界面会因此打不开,无法忽略和隐藏这个警告了。也是头疼,之前不久用的是腾讯云服务器同样的部署方式并没有出现这个警告,顺风顺水的,现在一头雾水。
使用:
php -i|grep Client
查询当前Client 版本,结果如下:
Client API version => 5.6.31
Client API library version => 5.6.31
Client API header version => 5.5.47-MariaDB
Client API version => 5.6.31
好吧,header version => 5.5.47-MariaDB这个是个奇葩,版本号不一样,怪不得报错了。听有的大牛说,版本不兼容,需升级MariaDB版本至少到5.6.31,或许可以解决。不过我的系统是CentOS7.2版本,众所周知,该系统从7.x系列版本开始抛弃了MySQL,缺省内置安装的是MariaDB,虽然MariaDB兼容MySQL,但是我还是比较喜欢MySQL,所以我给服务器强制安装了MySQL,也希望一直用下去,所以对于这个情况下,升级MariaDB这条路是不能走了。考虑当前安装的是php-mysql驱动,而当前的php版本比较新,于是想到这个奇葩是不是因为驱动版本较低生成的,然后尝试以下操作:
yum remove php-mysql
yum install php-mysqlnd
先卸载较低版本的php-mysql驱动,再升级安装新版的php-mysqlnd驱动。
OK,再重启下httpd和mysql服务:
systemctl restart httpd
systemctl restart mysqld
再打开网站,能正常打开,感觉可以了,再检测下那个奇葩的问题:
php -i|grep Client
结果如下:
Client API version => mysqlnd 5.0.10 - 20111026
Client API library version => mysqlnd 5.0.10 - 20111026
Client API version => mysqlnd 5.0.10 - 20111026
OK,版本全统一了,问题解决。
这里再添加一些小细节知识:
1.如果像我一样给CentOS7.x以及更新的版本系统强制安装MySQL的朋友,在安装MySQL前最好能卸载或清除下MariaDB软件或文件,这里介绍下卸载方法,以我的系统为例:
先检查MariaDB所有的安装文件:
rpm -qa | grep "mariadb"
结果如下:
mariadb-libs-5.5.44-2.el7.centos.x86_64
卸载:
rpm -e mariadb-libs-5.5.44-2.el7.centos.x86_64
如果出现这样的错误:
依赖检测失败:
libmysqlclient.so.18(libmysqlclient_18)(64bit)被(已安裝)postfix-2:2.10.1-6.el7.x86_64需要
rpm -e --nodeps mariadb-libs-5.5.44-2.el7.centos.x86_64
systemctl start mysqld
操作,再执行:
grep password /var/log/mysqld.log
第一个检索的“password”后面root@localhost: 后面跟着的密码应该就是默认密码了。
以上就是Linux解决Warning: mysql_connect(): Headers and client library minor version mismatch. 警告的全文介绍,希望对您学习和使用linux系统开发有所帮助.