php5.6 7.1共存,分享一下php7和其他php多版本共存的配置教程
使用php7正式版,性能确实有了质的飞跃,问题还是有不少的。比如opensns在php7下面自动回复异常等。
为了继续使用微信插件,我只好将php5.6又开了起来,下面简单分享一下多个版本php共存的方法。
一、编译路径
多个版本php要共存,必须使用不同的安装路径。比如,之前php5.6安装在/usr/local/php,那么我们安装php7的时候,就应该定义到 /usr/local/php7 等不一样的路径。
就如之前php7编译安装分享的那样,把安装目录和配置文件目录都指向新的路径:
Shell
Shell
CFLAGS= CXXFLAGS= ./configure --prefix=/usr/local/php7 --with-config-file-path=/usr/local/php7/etc \
--with-fpm-user=www --with-fpm-group=www --enable-fpm --enable-opcache \
--disable-fileinfo --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-jpeg-dir \
--with-iconv-dir=/usr/local --with-freetype-dir --with-png-dir --with-zlib --disable-rpath \
--with-libxml-dir=/usr --enable-xml --enable-bcmath --enable-shmop --enable-exif --with-curl \
--enable-sysvsem --enable-inline-optimization --enable-mbregex --enable-inline-optimization \
--enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl \
--with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-ftp \
--with-gettext --enable-zip --enable-soap --disable-ipv6 --disable-debug
1
2
3
4
5
6
7
8
9CFLAGS=CXXFLAGS=./configure--prefix=/usr/local/php7--with-config-file-path=/usr/local/php7/etc\
--with-fpm-user=www--with-fpm-group=www--enable-fpm--enable-opcache\
--disable-fileinfo--with-mysqli=mysqlnd--with-pdo-mysql=mysqlnd--with-jpeg-dir\
--with-iconv-dir=/usr/local--with-freetype-dir --with-png-dir--with-zlib--disable-rpath\
--with-libxml-dir=/usr--enable-xml --enable-bcmath--enable-shmop--enable-exif--with-curl\
--enable-sysvsem--enable-inline-optimization --enable-mbregex--enable-inline-optimization\
--enable-mbstring--with-mcrypt--with-gd--enable-gd-native-ttf--with-openssl\
--with-mhash--enable-pcntl--enable-sockets--with-xmlrpc--enable-ftp\
--with-gettext--enable-zip--enable-soap--disable-ipv6--disable-debug
具体安装这里就不多说了,请自行翻看之前的文章==>传送门
二、配置修改
编译安装完php7之后,我们需要将配置文件中涉及的路径都更新为php7的实际路径,具体如下:
①、php-fpm.conf
#编辑
vim /usr/local/php7/etc/php-fpm.conf
#找到如下参数:
listen = /dev/shm/php-cgi.sock
#改为
listen = /dev/shm/php7-cgi.sock
#保存退出
:wq
1
2
3
4
5
6
7
8#编辑
vim/usr/local/php7/etc/php-fpm.conf
#找到如下参数:
listen=/dev/shm/php-cgi.sock
#改为
listen=/dev/shm/php7-cgi.sock
#保存退出
:wq
如此一来,php5.6和php7的sock监听文件分别为/dev/shm/php-cgi.sock和/dev/shm/php7-cgi.sock。
②、nginx配置
nginx配置只需要修改php动态解析的sock指向即可:
在站点对应的nginx配置文件中(比如,vhost/zhangge.net.conf )找到:
location ~ [^/]\.php(/|$) {
try_files $uri =404;
fastcgi_pass unix:/dev/shm/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
1
2
3
4
5
6location~[^/]\.php(/|$){
try_files$uri=404;
fastcgi_pass unix:/dev/shm/php-cgi.sock;
fastcgi_indexindex.php;
includefastcgi.conf;
}
将其中的
fastcgi_pass unix:/dev/shm/php-cgi.sock;
改为:
fastcgi_pass unix:/dev/shm/php7-cgi.sock; #路径改为和该版本php的sock监听路径一致
1
2
3fastcgi_pass unix:/dev/shm/php-cgi.sock;
改为:
fastcgi_pass unix:/dev/shm/php7-cgi.sock;#路径改为和该版本php的sock监听路径一致
然后重启nginx就能将此站点环境更新到php7了。
说白了,就是你想让站点用哪个版本就修改为该版本的监听文件路径。当然,也有一些php用的是端口的监听模式,修改原理一致!
如果只是某些特殊的页面需要使用php的其他版本,也只要新增额外的location。假如,网站有一个目录是另外的建站程序,不支持php7,那么我们需要额外设置下即可:
location /wap {
try_files $uri =404;
fastcgi_pass unix:/dev/shm/php-cgi.sock; #对于/wap这个路径,使用php5.6
fastcgi_index index.php;
include fastcgi.conf;
}
1
2
3
4
5
6location/wap{
try_files$uri=404;
fastcgi_pass unix:/dev/shm/php-cgi.sock;#对于/wap这个路径,使用php5.6
fastcgi_indexindex.php;
includefastcgi.conf;
}
更多需求,举一反三即可!
同样的,我们也可以修改fastcgi端口为9000以外的端口,在nginx中fastcgi_pass 127.0.0.1:端口号;通过不同端口来访问
三、启动脚本
在第二步,我们修改了php的配置,但是也没启动php。怎么启动很简单,我们先修改下服务脚本:
找到 PHP5.6 的服务脚本 /etc/init.d/php-fpm
#复制一份:
cp /etc/init.d/php-fpm /etc/init.d/php7
#编辑修改:
vim /etc/init.d/php7
#找到
prefix=/usr/local/php
#改为
prefix=/usr/local/php7
#最后保存退出
:wq
1
2
3
4
5
6
7
8
9
10#复制一份:
cp /etc/init.d/php-fpm /etc/init.d/php7
#编辑修改:
vim /etc/init.d/php7
#找到
prefix=/usr/local/php
#改为
prefix=/usr/local/php7
#最后保存退出
:wq
现在,我们就可以使用 service php7 start 启动php7了,而之前的php5.6则继续使用 service php-fpm start 启动。
四、其他考虑
上述修改,只是让多个版本的php能够同时run起来,并未考虑多个版本的资源抢占问题。其实,还是有些许文章可以做的。
比如,php-fpm.conf 会对php的进程数量、响应超时等进行优化配置,很多时候我们都是用的单个php环境的最优配置。不过,当我们跑了多个php版本的时候,这些配置就应该折中考虑一下了。
就拿我博客举例,我使用nginx rewrite 定向,php5.6继续存在只是为了微信的一个插件,也就只是博客的小部分功能,其他绝大多数功能还是要用php7的,所以我在配置这个php-fpm的时候,会将php7的线程等资源给多一些,php5.6我就只给了一个主进程和一个子线程了。
好了,以上内容就是php多版本共存分享,充分理解下nginx和php的交互,本文分享可有可无
php5.6 7.1共存,分享一下php7和其他php多版本共存的配置教程相关推荐
- python多版本共存 ubuntu_Linux下python3与python3的多版本共存
python3已经出来有些许时候了,python3相比python2进行了大量的改进,包括语法,新的功能,还有优化.虽然很多库已经同时支持 python2和python3了,但是有些库仍然没有很好的支 ...
- Centos+Nginx+PHP7.0编译安装(和PHP5.6老版本共存)
来源:http://blog.csdn.net/liuxinmingcode/article/details/50319145 场景 LNMP 当前版本:PHP 5.5.7 为了体验PHP7的速度 ...
- centos 安装PHP7并且与其他版本共存并且为PHP7安装redis扩展
centos 安装PHP7并且与其他版本共存 wget -c -Ophp-7.1.5.tar.gz http://cn2.php.net/get/php-7.1.5.tar.gz/from/this/ ...
- iis php多版本共存,IIS7中多个版本php共存的方法
最近又重回.net,用回IIS.然后用到某个php开源项目,需要低版本的php,之前装的一个php5.5不能用,所以决定降一下版本,后面发现其实可以多个版本共用.于是打算分享下.分享之前网上先搜了下, ...
- ubuntu php多版本共存切换
做开发时,由于本机开发的php版本跟线上发布的php版本不一致,很容易在上线后,发现因版本的影响导致一些bug,但又不想重新去换本机的php版本,那么多版本共存就很方便了!有必要时,切换到指定版本测试 ...
- oneinstack更换php版本,oneinstack一键包Nginx php多版本共存配置全过程
oneinstack一键包地址:http://oneinstack.com/install/ 非常好用的一键包.下面说说基于oneinstack一键包的 Nginx php多版本共存配置全过程 第一步 ...
- CentOS下与Apache连接的PHP多版本共存方案实现详解
这篇文章主要介绍了CentOS下与Apache连接的PHP多版本共存方案实现,针对mod_fcgi模块的配置作了一些说明,需要的朋友可以参考下 在apache下整合fastCGI模式运行的php-fp ...
- Android配置build.gradle解锁更高逼格玩法(多版本共存、分服务器打包等)
背景 在日常的AndroidAPP开发过程中,常常需要在同一设备上安装同一APP的多个版本.如在没有测试设备的情况下需要使用到个人设备进行测试,而该设备已安装正式版本且有大量缓存数据.applicat ...
- w我的世界pe开服器php7,我的世界手机自主开启PE服务器教程
我的世界手机自主开启PE服务器教程.这次为大家带来的是教大家使用游戏狗联机盒子,手机自主开启PE服务器教程.不过这种方法比较麻烦,需要下 载对应版本的整合包还要添加对应开服核心.并且有时就算版本对应, ...
最新文章
- .net中的IO体系介绍
- struts+spring+hibernate总结
- 初识Frida--Android逆向之Java层hook (二)
- 钢琴快案例及手风琴案例
- 数据库 分库 分表 分区
- mysql书写规则_每天10分钟带你学会MySQL(二)SQL语句的基本书写规则
- sqli-lab———writeup(11~17)
- 【Python】IDLE工具
- dos窗口mysql创建数据库指定字符集_MySQL数据库 dos 命令窗口命令集
- 小程序开发入门基础篇-张代浩-专题视频课程
- 综述!信息检索中的花式预训练
- EclipseLink+H2 快速搭建JPA开发环境
- linux线程组和进程区别,Linux中进程和线程之间的区别
- 2018年个人的一些简单预测
- Spring框架从入门到精通
- 你理解大话西游片尾那句“他好像一条狗”吗?
- MFC动态修改Static Text控件caption
- 惠普HP compaq康柏系列 CQ40笔记本电脑拆机除尘
- python处理grd格式文件_python json pickle 模块
- Ie8兼容性问题web.config设置