多版本php共存 linux,linux下多版本php共存的原理、方法
服务器当前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共存的原理、方法相关推荐
- linux系统可以用迅雷吗,在Linux系统下使用wine运行迅雷5的方法
在Linux系统下使用wine运行迅雷5的方法 一.下载ies4linux 去 http://www.tatanka.com.br/ies4linux/page/Installation 下载ies4 ...
- Linux下添加计划任务,Linux系统下使用crontab添加计划任务的方法
在服务器中添加定期执行的任务,在很多情况下是非常必要的.比如,每天清理一次/tmp目录下的文件;没几分钟检查某一守护进程是否正常等等.这样计划任务就显得尤为方便.下面将介绍如何在Linux系统中 ...
- 计划任务执行php文件,linux系统下添加计划任务执行php文件方法
在web开发过程中,经常需要设定一些定期执行的任务,比如商品定时上下架.我们以php文件为例,讲解linux下的计划任务. 方法/步骤 1.打开linux系统命令行界面. 在命令行界面中输入如下命令: ...
- linux查看地址和,UNIX/LINUX平台下查看MAC和WWN地址的方法
归纳了一下,在UNIX/LINUX平台下查看MAC和WWN地址的方法 查看MAC地址 hp-ux #lanscan tru64 unix #netstat -ia aix #lsdev -Cc if ...
- 在Linux环境下mysql的root密码忘记解决方法
在Linux环境下mysql的root密码忘记解决方法 参考文章: (1)在Linux环境下mysql的root密码忘记解决方法 (2)https://www.cnblogs.com/hgj123/p ...
- 网站截图环境 php,Linux环境下php实现给网站截图的方法
本文实例讲述了Linux环境下php实现给网站截图的方法.分享给大家供大家参考,具体如下: 第一步:下载wkhtmltopdf 复制代码 代码如下: [root@iZ94aawoublZ ~]# wg ...
- linux下安装两个nginx教程,在linux系统下安装两个nginx的简单方法
在linux系统下安装两个nginx的简单方法 发布时间:2017-03-09 12:08 来源:互联网 当前栏目:web技术类 在linux下安装nginx的时候,一般在./configure的阶段 ...
- php网站挂linux,Linux环境下php实现给网站截图的方法
本文实例讲述了Linux环境下php实现给网站截图的方法.分享给大家供大家参考,具体如下: 第一步:下载wkhtmltopdf [root@iZ94aawoublZ ~]# wget http://d ...
- 修改linux下全局数据库名,linux/unix下修改oracle数据库实例名的方法
linux/unix下修改oracle数据库实例名的方法 2018年12月10日 | 萬仟网IT编程 | 我要评论 linux/unix下修改oracle实例名的方法 1.检查原来的数据库实例名 $ ...
- 在Linux环境下mysql的root密码忘记解决方法(三种)
这篇文章主要介绍了在Linux环境下mysql的root密码忘记解决方法,详细的介绍了3种解决办法,具有一定的参考价值,有兴趣的可以了解一下. MySQL密码的恢复方法之一 1.首先确认服务器出于安全 ...
最新文章
- 2018-03-26
- UVA11212Editing aBook 编辑书稿
- 网狐棋牌游戏平台服务器架构设计分析
- java中级面试题 之基础篇
- 图解wordpress模板架构
- 线性回归的正规方程法
- 3.5寸TFT液晶屏验证板设计过程——硬件篇
- 康托尔、哥德尔、图灵——永恒的金色对角线(rev#2)
- 操作系统进程同步例题(四)生产者-消费者问题
- linux ppm转jpg_python将.ppm格式图片转换成.jpg格式文件的方法
- gitee搭建个人博客教程
- Dynamics CRM 客户端程序开发:常用工具介绍之Dynamics XRM Tools
- 在阿里云买的域名,如何下载该域名下的域名证书?
- 申宝策略-船舶军工表现靓丽
- 1、学习笔记-谁说rookie不会数分(入门篇)
- C语言初阶第二篇:换我心,为你心,始知C语言 从程序调试到全网最详细字符串教学来喽
- android计算器开发
- Python与Arduino绘制超声波雷达扫描
- win7 sp2 好神奇
- 如何实现飞书自建应用PC端指定浏览器打开
热门文章
- 一文掌握 Linux 内存管理
- 令人惊叹的前端路由原理解析和实现方式
- Name Server Daemon (NSD)
- C++之TR1::function
- 停课不停学,优酷直播如何将网课点名延迟降到0.6s?
- leetcode 1178. Number of Valid Words for Each Puzzle | 1178. 猜字谜(bitmask位运算)
- leetcode 155. 最小栈(常数时间获取最小值,需要维护两个栈)
- leetcode 121. 买卖股票的最佳时机
- 响应式web(一):什么是响应式web,异步调用,callback的本质,servlet3的异步
- 【人工智能导论】遗传算法求解TSP问题(含源码github)