• 聊聊这两天在linux安装PHP7遇到的坑,真的是坑死人不偿命啊


    前情摘要:

    这两天要在虚拟机上部署项目,用于测试在linux上项目效果怎样,然后这两天就一直在部署apache+mysql+php

    其实部署还是很简单的具体的apache和mysql部署方法请看其他两篇博文:

    apache:http://www.cnblogs.com/sunshine-H/p/8110608.html

    mysql:http://www.cnblogs.com/sunshine-H/p/8109403.html

    PHP在我安装apache的时候就一起安装了,但是当我

    #php -v

    查看php版本的时候,却发现php是5.6版本的!!!

    那这就尴尬了,我的项目都是基于php7去开发的。没办法只能把php5.6卸载了,重新安装php7 lor!

    第一步:卸载旧版的PHP

    第一个坑来了!

    当使用

    #yum remove php

    确实提示卸载完成了,但是!

    在apache部署目录下写个phpinfo.php

    <?php

      phpinfo()

    ?>

    在浏览器打开localhost/phpinfo.php一看,竟然还提示php是5.6版本的,然后就有小伙伴说,你还没重启apache服务啊,好吧我重启下

    #systemctl restart httpd

    再次打开一看,那个尴尬啊!还是存在,具体的解决办法看我另一篇博文,就不在这里赘述:

    http://www.cnblogs.com/sunshine-H/p/8117105.html

    第二步:开始安装PHP7

    ①yum安装:

    这里不得不说,对于初接触linux的人来说yum源也是个麻烦的事,在你使用yum命令install软件时,提示下最好经常更新yum源

    #yum -y update

    然后执行如下命令安装epel

    #yum -y install epel-release

    选择php的yum源

    // 更换rpm源,请根据自己的centos版本选择相应的rpm源进行安装

    // Centos 5.X:

    #rpm -Uvh http://mirror.webtatic.com/yum/el5/latest.rpmCentOs 6.x:

    #rpm -Uvh http://mirror.webtatic.com/yum/el6/latest.rpm

    // CentOs 7.X:

    #rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm

    #rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

    开始安装

    #yum install php70w

    当你安装完了,安全没事啊,别着急

    第二个坑又来了!

    当你想对mysql进行连接的时候,这时你发现你需要安装扩展啊,好我们执行扩展安装命令

    #yum install php-mysql

    如果小伙伴完全卸载旧版php的话基本不会遇到这个坑的,但是不排除部分小伙伴还是会遇到,报错如下:

    php70w-common conflicts with php-common-5.4.16

    当时遇到这个问题我是绝望的,为什么?因为无论我用yum卸载还是rpm处理都没法删掉php-common-5.4.16这个毒瘤!

    后来发现删不了就不删了,既然那些扩展是依赖php的版本选择性安装的,那就换个思路去处理好了,还是上面那个安装mysql拓展的命令

    解决办法:yum install php70w-mysql

    你会发现,咦!竟然可以安装了,没错,就是这么简单,但是却浪费我几个小时。

    第三步:安装依赖包

    下面提供一些常用的需要安装的依赖包:

     

    第四步:部署项目

    部署项目也没什么好说的了,直接说我遇到的坑吧。

    第三个坑!请看下图:

    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

    好吧,出现了一个异类!!

    据某大牛说,版本不兼容,需升级MariaDB版本至少到5.6.31或许可以解决。我的系统是CentOS7.2版本,众所周知,CentOS从7.x系列版本开始抛弃了MySQL,缺省安装的是MariaDB,虽然MariaDB兼容MySQL,但是我还是比较喜欢MySQL,所以我给服务器强制安装了MySQL,也希望一直用下去,对于这个情况,升级MariaDB这条路是不能走了。考虑当前安装的是php-mysql驱动,而当前的php版本比较新,想到这个奇葩是不是因为驱动版本较低造成的,于是尝试以下操作:

    # yum remove php-mysql

    # yum install php70w-mysql     //注意这里的70w是我自己的php7的版本,上面也有提到过,自己注意吧,换成自己的就好

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

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

    # systemctl restart httpd

    # systemctl restart mysqld

    然后重新试下打开项目,完美,可以了。

    -----------------------------------------------------------------小小分割线:20180102-----------------------------------------------------------------------

    后面遇到什么问题都会继续在这里更新!

    祝大家新年快乐!

    欢迎大家到下方留言!

    1. php -i|grep Client  
  • 相关阅读:
    JAVA面试基础
    扔硬币问题
    随机数生成随机数
    囚犯猜帽子问题
    十道智力题(三)
    十道智力题(二)
    十道智力题(一)
    lintcode:排颜色 II
    机器学习中的几个常见概念(持续更新中......)
    如何打印一棵树(Java)
  • 原文地址:https://www.cnblogs.com/sunshine-H/p/8144953.html
Copyright © 2020-2023  润新知