服务器当前PHP版本5.4,新项目中使用了Laravel,PHP版本最低要求5.6。希望保持现有应用同时使用PHP5.6.*。也就是说需要两个版本的PHP同时存在,供nginx根据需要调用不同版本。

一、原理:

Nginx是通过PHP-FastCGI与PHP交互的。而PHP-FastCGI运行后会通过文件、或本地端口两种方式进行监听,在Nginx中配置相应的FastCGI监听端口或文件即实现Nginx请求对PHP的解释。

既然PHP-FastCGI是监听端口和文件的,那就可以让不同版本的PHP-FastCGI同时运行,监听不同的端口或文件,Nginx中根据需求配置调用不同的PHP-FastCGI端口或文件,即可实现不同版本PHP共存了。

二、方法:

原理很简单,操作方法其实也很简单。

1.php-fpm监听不同端口,如9000(默认)、9001

2.Nginx配置调用端口,(9000,9001)

第一步,PHP编译安装的话,php-fpm配置文件路径一般是

/PHP_INSTALLED_PATH/etc/php-fpm.conf

(php刚编译安装完时配置文件名为php-fpm.default.conf,直接改名为php-fpm.conf即可),当然这个路径是编译时配置的,上面这个路径算是最佳实践吧。

下面这里即是配置监听端口的地方,此处端口9000改为9001,其他配置参考旧版本php-fpm.conf的配置即可。listen = 127.0.0.1:9000#fpm监听端口,即nginx中php处理的地址,一般默认值即可。可用格式为: 'ip:port', 'port', '/path/to/unix/socket'. 每个进程池都需要设置.

注意,如果是要安装5.2及以前版本需要打php-fpm补丁,下载fpm补丁包并执行命令gzip-cdphp-5.2.14-fpm-0.5.14.diff.gz | patch -d php-5.2.14 -p1

第二步,修改Nginx vhost.conf配置文件,添加如下部分:

1 server {

2     listen       80;

3     server_name  a.b.com;

4     index index.html index.htm index.php;

5     root /MY_PROJECT_PATH; 6  7     location / {

8            try_files $uri $uri/ /index.php?$query_string;

9     }

10     location ~ .*\.(php|php5)?$         {

11         #fastcgi_pass  unix:/tmp/php-cgi.sock;

12         fastcgi_pass  127.0.0.1:9001;

13         fastcgi_index index.php;

14         include fastcgi.conf;

15     }16 }

上面9001部分即是将所有.php和.php5文件请求都转发到9001端口。

第三步、启动新版php-fpm,重启nginx。

php-fpm支持的操作:start,启动PHP的FastCGI进程。

stop,强制终止PHP的FastCGI进程。

quit,平滑终止PHP的FastCGI进程。

restart, 重启PHP的FastCGI进程。

reload, 重新加载PHP的php.ini。

logrotate, 重新启用log文件。

常见错误1:php-fpm start启动后通过浏览器访问项目出现502BAD GATEWAY,查看netstat -ano发现并没有监听到9001端口的程序,应该是php-fpm启动出错。

查资料发现可以通过指定配置文件来启动php-fpm,命令如下:#测试php-fpm配置/usr/local/php/sbin/php-fpm -t/usr/local/php/sbin/php-fpm -c /usr/local/php/etc/php.ini -y /usr/local/php/etc/php-fpm.conf -t

#启动php-fpm/usr/local/php/sbin/php-fpm/usr/local/php/sbin/php-fpm -c /usr/local/php/etc/php.ini -y /usr/local/php/etc/php-fpm.conf

指定配置文件后启动正常,正确监听9001端口

常见错误2:ERROR: [pool www] cannot get uid for user '@php_fpm@

ERROR: FPM initialization failed

解决办法是修改php-fpm.conf中user和group部分为系统用户的名字,如root或www(应用这个,root千万别用,权限太大)

通过以上三步便实现了Linux上多版本PHP共存,不过这个前提是服务器上已经安装了两个版本的PHP。

原文出处:http://www.cnblogs.com/ningskyer/articles/5639276.html

多版本php共存 linux,linux下多版本php共存的原理、方法相关推荐

  1. linux系统可以用迅雷吗,在Linux系统下使用wine运行迅雷5的方法

    在Linux系统下使用wine运行迅雷5的方法 一.下载ies4linux 去 http://www.tatanka.com.br/ies4linux/page/Installation 下载ies4 ...

  2. Linux下添加计划任务,Linux系统下使用crontab添加计划任务的方法

     在服务器中添加定期执行的任务,在很多情况下是非常必要的.比如,每天清理一次/tmp目录下的文件;没几分钟检查某一守护进程是否正常等等.这样计划任务就显得尤为方便.下面将介绍如何在Linux系统中 ...

  3. 计划任务执行php文件,linux系统下添加计划任务执行php文件方法

    在web开发过程中,经常需要设定一些定期执行的任务,比如商品定时上下架.我们以php文件为例,讲解linux下的计划任务. 方法/步骤 1.打开linux系统命令行界面. 在命令行界面中输入如下命令: ...

  4. linux查看地址和,UNIX/LINUX平台下查看MAC和WWN地址的方法

    归纳了一下,在UNIX/LINUX平台下查看MAC和WWN地址的方法 查看MAC地址 hp-ux #lanscan tru64 unix #netstat -ia aix #lsdev -Cc if ...

  5. 在Linux环境下mysql的root密码忘记解决方法

    在Linux环境下mysql的root密码忘记解决方法 参考文章: (1)在Linux环境下mysql的root密码忘记解决方法 (2)https://www.cnblogs.com/hgj123/p ...

  6. 网站截图环境 php,Linux环境下php实现给网站截图的方法

    本文实例讲述了Linux环境下php实现给网站截图的方法.分享给大家供大家参考,具体如下: 第一步:下载wkhtmltopdf 复制代码 代码如下: [root@iZ94aawoublZ ~]# wg ...

  7. linux下安装两个nginx教程,在linux系统下安装两个nginx的简单方法

    在linux系统下安装两个nginx的简单方法 发布时间:2017-03-09 12:08 来源:互联网 当前栏目:web技术类 在linux下安装nginx的时候,一般在./configure的阶段 ...

  8. php网站挂linux,Linux环境下php实现给网站截图的方法

    本文实例讲述了Linux环境下php实现给网站截图的方法.分享给大家供大家参考,具体如下: 第一步:下载wkhtmltopdf [root@iZ94aawoublZ ~]# wget http://d ...

  9. 修改linux下全局数据库名,linux/unix下修改oracle数据库实例名的方法

    linux/unix下修改oracle数据库实例名的方法 2018年12月10日 | 萬仟网IT编程 | 我要评论 linux/unix下修改oracle实例名的方法 1.检查原来的数据库实例名 $ ...

  10. 在Linux环境下mysql的root密码忘记解决方法(三种)

    这篇文章主要介绍了在Linux环境下mysql的root密码忘记解决方法,详细的介绍了3种解决办法,具有一定的参考价值,有兴趣的可以了解一下. MySQL密码的恢复方法之一 1.首先确认服务器出于安全 ...

最新文章

  1. 2018-03-26
  2. UVA11212Editing aBook 编辑书稿
  3. 网狐棋牌游戏平台服务器架构设计分析
  4. java中级面试题 之基础篇
  5. 图解wordpress模板架构
  6. 线性回归的正规方程法
  7. 3.5寸TFT液晶屏验证板设计过程——硬件篇
  8. 康托尔、哥德尔、图灵——永恒的金色对角线(rev#2)
  9. 操作系统进程同步例题(四)生产者-消费者问题
  10. linux ppm转jpg_python将.ppm格式图片转换成.jpg格式文件的方法
  11. gitee搭建个人博客教程
  12. Dynamics CRM 客户端程序开发:常用工具介绍之Dynamics XRM Tools
  13. 在阿里云买的域名,如何下载该域名下的域名证书?
  14. 申宝策略-船舶军工表现靓丽
  15. 1、学习笔记-谁说rookie不会数分(入门篇)
  16. C语言初阶第二篇:换我心,为你心,始知C语言 从程序调试到全网最详细字符串教学来喽
  17. android计算器开发
  18. Python与Arduino绘制超声波雷达扫描
  19. win7 sp2 好神奇
  20. 如何实现飞书自建应用PC端指定浏览器打开

热门文章

  1. 一文掌握 Linux 内存管理
  2. 令人惊叹的前端路由原理解析和实现方式
  3. Name Server Daemon (NSD)
  4. C++之TR1::function
  5. 停课不停学,优酷直播如何将网课点名延迟降到0.6s?
  6. leetcode 1178. Number of Valid Words for Each Puzzle | 1178. 猜字谜(bitmask位运算)
  7. leetcode 155. 最小栈(常数时间获取最小值,需要维护两个栈)
  8. leetcode 121. 买卖股票的最佳时机
  9. 响应式web(一):什么是响应式web,异步调用,callback的本质,servlet3的异步
  10. 【人工智能导论】遗传算法求解TSP问题(含源码github)