第一弹 - 资源福利版.apk
萌猫导航
首页 » 技术 » PHP

Linux解决Warning: mysql_connect(): Headers and client library minor version mismat

作者: 惰性猫咪 来源: 怪哈哈网 日期: 2017-07-30 17:11:59 人气: -

这两天用阿里云服务器重新部署网站服务器后,打开某PHP页面出现了如下警告:Warning: mysql_connect(): Headers and client library minor version mismatch. Headers:50547 Library:50631 in /XXX(某某目录)/wp-db.php on line 1520,虽然是警告,但是有的界面会因此打不开,甚是头疼,前不久用的是腾讯云服务器同样的部署方式并没有出现这个警告,顺风顺水的,现在一头雾水。

使用:

[plain] view plain copy
  1. 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版本,众所周知,CentOS从7.x系列版本开始抛弃了MySQL,缺省安装的是MariaDB,虽然MariaDB兼容mysql,但是我还是比较喜欢MySQL,所以我给服务器强制安装了MySQL,也希望一直用下去,对于这个情况,升级MariaDB这条路是不能走了。考虑当前安装的是php-mysql驱动,而当前的php版本比较新,想到这个奇葩是不是因为驱动版本较低造成的,于是尝试以下操作:

[plain] view plain copy
  1. yum remove php-mysql  
  2. yum install php-mysqlnd  

先卸载较低版本的 php-mysql驱动,再升级安装新版的php-mysqlnd驱动。

OK,再重启下httpd和mysql服务:

[plain] view plain copy
  1. systemctl  restart httpd  
  2. systemctl  restart mysqld  

再打开网站,能正常打开,感觉可以了,再检测下那个奇葩的问题:

[plain] view plain copy
  1. 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所有的安装文件:

[plain] view plain copy
  1. rpm -qa | grep "mariadb"  

结果如下:

mariadb-libs-5.5.44-2.el7.centos.x86_64
卸载:

[plain] view plain copy
  1. rpm -e mariadb-libs-5.5.44-2.el7.centos.x86_64  

如果出现这样的错误:

依赖检测失败:

libmysqlclient.so.18()(64bit) 被 (已安裝) postfix-2:2.10.1-6.el7.x86_64 需要
libmysqlclient.so.18(libmysqlclient_18)(64bit) 被 (已安裝) postfix-2:2.10.1-6.el7.x86_64 需要 

那么加上“--nodeps”强制卸载:

[plain] view plain copy
  1. rpm -e --nodeps mariadb-libs-5.5.44-2.el7.centos.x86_64  


2.安装新版的MySQL是有默认密码的,在mysql执行日志里,不过需要先启动mysqld服务,才能看到。所以安装后修改密码前应执行:

[plain] view plain copy
  1. systemctl start mysqld  


操作,再执行:

[plain] view plain copy
  1. grep password /var/log/mysqld.log   

第一个检索的“password”后面root@localhost: 后面跟着的密码应该就是默认密码了。


转载请注明文章来源(欢迎分享): http://www.guaihaha.com/php/16686.html

怪哈哈动漫图库
关于怪哈哈
怪哈哈是一个集搞笑,美女,动漫,游戏,技术等为核心的综合性网站!
联系我们
商务洽谈、广告合作、友情链接、侵权举报,这些都可以联系我们哦!
关于我们 - 联系我们 - 广告服务 - 免责申明   
本站文字和图片均为严格审查筛选收藏,均收集整理于互联网,其著作权归原作者所有,如果有侵犯您权利的照片,请来信告知,我们将及时撤销相应文字和图片.
Copyright @2014-2020 怪哈哈网 All Rights Reserved.
【谢谢大家一直支持贵站】