聊聊这两天在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-----------------------------------------------------------------------
后面遇到什么问题都会继续在这里更新!
祝大家新年快乐!
欢迎大家到下方留言!
- php -i|grep Client
聊聊这两天在linux安装PHP7遇到的坑,真的是坑死人不偿命啊的更多相关文章
- Linux安装php-7.0.16,完成php和apache的配置
Linux安装php-7.0.16,完成php和apache的配置 版本:php-7.0.16.tar.gz,libxml2-2.9.2.tar.gz(php需要它的支持,首先安装它) 说明 ...
- linux 安装php7 Nginx
这里 记录下 本屌安装linux 下安装php7 即遇到的问题. wget http://cn2.php.NET/distributions/php-7.0.4.tar.gz tar zxvf ph ...
- linux安装PHP7以及扩展
Linux下安装PHP7 事先升级gcc4.8,然后安装PHP7,安装步骤参考:CentOS安装PHP7 1.Linux下编译的php没有php.ini 解决办法:从源代码目录中复制php.ini-d ...
- Linux安装Redis步骤和make遇到的坑
Linux安装Redis服务步骤 1.获取redis资源 cd /usr/local wget https://mirrors.huaweicloud.com/redis/redis-6 ...
- linux安装php7.2.7
1.下载php 官网下载:#wget http://cn2.php.net/get/php-7.2.7.tar.gz/from/a/mirror.(ps:应该是这么下载的,但是我下载的都是一个mirr ...
- linux安装php7
之前一直对linux研究的比较少,终于下定决心好好把linux玩一下 首先~我是安装了vm虚拟机,然后使用的是centos7的版本.因为vm不好复制粘贴,故使用了xshell连接了我的linux进行操 ...
- linux 安装php7
http://blog.csdn.net/whatday/article/details/50645117 1: wget http://cn2.php.NET/distributions/php- ...
- WINDOWS和Linux上安装php7 alpha 并安装 yaf
WINDOWS和Linux上安装php7 alpha 并安装 yaf PHP技术 widuu 2个月前 (06-15) 126浏览 0评论 windows 1.windows上安装 php7 ...
- Linux环境PHP7.0安装
原文地址:http://blog.csdn.net/21aspnet/article/details/47708763 PHP7和HHVM比较 PHP7的在真实场景的性能确实已经和HHVM相当, 在一 ...
随机推荐
- ZBarReaderView屏幕旋转问题
转载:http://42.96.197.72/ios-zbarreaderview-interface-orientation/ 在iPad应用中,如果没有特殊情况,需要让应用支持所有屏幕方向.在iP ...
- Lisp语言简介
摘自维基百科,原链接为:http://zh.wikipedia.org/zh/LISP 因为Clojure是Lisp的一种的方言,所以我们可以先来了解一下Lisp这个比较小众的编程到底是什么~ --- ...
- bat脚本中timeStamp解决方案
之前做了个工具包,用了timeStamp做文件名. 一般来说最简单的代码类似于: set timeStamp=%date:/=-%_%time% echo %timeStamp% >2018-0 ...
- Codeforces 678E(Another Sith Tournament)
题目链接:传送门 题目大意:有n个人决斗(n<=18),每两个人之间都有一定几率杀死对方,一次进行一次决斗,胜利者成为擂主继续接受决斗直到只剩下一个人,你是一号,问你最大有多大几率存活到最后. ...
- python框架Scrapy中crawlSpider的使用——爬取内容写进MySQL
一.先在MySQL中创建test数据库,和相应的site数据表 二.创建Scrapy工程 #scrapy startproject 工程名 scrapy startproject demo4 三.进入 ...
- Centos6.5下Samba服务器的安装和配置
1.安装samba服务 # yum install samba samba-client samba-swat 2.安装包说明 samba-3.6.23-43.el6_9.x86_64----> ...
- Exchange 2016 系统要求
Exchange 2016 和早期版本的 Exchange Server 共存方案 Exchange 2016支持混合部署方案 Exchange 2016 的网络和目录服务器要求 目录服务体系结构: ...
- wire_format.cc:1091] String field 'accountid' contains invalid UTF-8 data when serializing a protocol buffer. Use the 'bytes' type if you intend to send raw bytes.
原因: 在protobuf 的string字段中存在中文,序列化的时候会出现截断数据,string这个类型带有检查功能 解决方法: 把protobuf中存在中文的string字段类型 改为bytes ...
- a标签的href和onclick
1.链接的onclick事件被先执行,href的事件后执行 2.就今天遇到的问题说一下,通过a标签的onclick事件实现点击后定位到指定的div,或者是执行其他函数(比如弹出artdialog等), ...
- java中的System.copyof()与Array.copyof()区别
java中的System.copyof()与Array.copyof()区别 在复制数组时我们可以使用System.copyof(),也可以使用Array.copyof(),但是它们之间是有区别的.以 ...