使用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多版本共存的配置教程相关推荐

  1. python多版本共存 ubuntu_Linux下python3与python3的多版本共存

    python3已经出来有些许时候了,python3相比python2进行了大量的改进,包括语法,新的功能,还有优化.虽然很多库已经同时支持 python2和python3了,但是有些库仍然没有很好的支 ...

  2. Centos+Nginx+PHP7.0编译安装(和PHP5.6老版本共存)

    来源:http://blog.csdn.net/liuxinmingcode/article/details/50319145 场景 LNMP  当前版本:PHP 5.5.7  为了体验PHP7的速度 ...

  3. 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/ ...

  4. iis php多版本共存,IIS7中多个版本php共存的方法

    最近又重回.net,用回IIS.然后用到某个php开源项目,需要低版本的php,之前装的一个php5.5不能用,所以决定降一下版本,后面发现其实可以多个版本共用.于是打算分享下.分享之前网上先搜了下, ...

  5. ubuntu php多版本共存切换

    做开发时,由于本机开发的php版本跟线上发布的php版本不一致,很容易在上线后,发现因版本的影响导致一些bug,但又不想重新去换本机的php版本,那么多版本共存就很方便了!有必要时,切换到指定版本测试 ...

  6. oneinstack更换php版本,oneinstack一键包Nginx php多版本共存配置全过程

    oneinstack一键包地址:http://oneinstack.com/install/ 非常好用的一键包.下面说说基于oneinstack一键包的 Nginx php多版本共存配置全过程 第一步 ...

  7. CentOS下与Apache连接的PHP多版本共存方案实现详解

    这篇文章主要介绍了CentOS下与Apache连接的PHP多版本共存方案实现,针对mod_fcgi模块的配置作了一些说明,需要的朋友可以参考下 在apache下整合fastCGI模式运行的php-fp ...

  8. Android配置build.gradle解锁更高逼格玩法(多版本共存、分服务器打包等)

    背景 在日常的AndroidAPP开发过程中,常常需要在同一设备上安装同一APP的多个版本.如在没有测试设备的情况下需要使用到个人设备进行测试,而该设备已安装正式版本且有大量缓存数据.applicat ...

  9. w我的世界pe开服器php7,我的世界手机自主开启PE服务器教程

    我的世界手机自主开启PE服务器教程.这次为大家带来的是教大家使用游戏狗联机盒子,手机自主开启PE服务器教程.不过这种方法比较麻烦,需要下 载对应版本的整合包还要添加对应开服核心.并且有时就算版本对应, ...

最新文章

  1. .net中的IO体系介绍
  2. struts+spring+hibernate总结
  3. 初识Frida--Android逆向之Java层hook (二)
  4. 钢琴快案例及手风琴案例
  5. 数据库 分库 分表 分区
  6. mysql书写规则_每天10分钟带你学会MySQL(二)SQL语句的基本书写规则
  7. sqli-lab———writeup(11~17)
  8. 【Python】IDLE工具
  9. dos窗口mysql创建数据库指定字符集_MySQL数据库 dos 命令窗口命令集
  10. 小程序开发入门基础篇-张代浩-专题视频课程
  11. 综述!信息检索中的花式预训练
  12. EclipseLink+H2 快速搭建JPA开发环境
  13. linux线程组和进程区别,Linux中进程和线程之间的区别
  14. 2018年个人的一些简单预测
  15. Spring框架从入门到精通
  16. 你理解大话西游片尾那句“他好像一条狗”吗?
  17. MFC动态修改Static Text控件caption
  18. 惠普HP compaq康柏系列 CQ40笔记本电脑拆机除尘
  19. python处理grd格式文件_python json pickle 模块
  20. Ie8兼容性问题web.config设置

热门文章

  1. Python图形界面开发初步 1
  2. 变分自编码器原理解析
  3. 用python编写彩色螺旋线
  4. 点云IO篇之las文件读写
  5. app被拒 Guideline 5.1.1 - Legal - Privacy - Data Collection and Storage
  6. 面试展示:CRM项目客户管理模块展示
  7. 万能计算器——中缀表达式转换成后缀表达式(C++实现)【可以计算小数和负数】
  8. 在线客服系统前端多国语言实现方案和代码
  9. USBKey scsi
  10. Npm link的作用与使用