设为首页 收藏本站
查看: 1203|回复: 0

[经验分享] linux下多版本php共存的原理、方法

[复制链接]

尚未签到

发表于 2018-12-13 07:25:02 | 显示全部楼层 |阅读模式
  服务器当前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 -cd php-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



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-650680-1-1.html 上篇帖子: php执行root权限linux命令 下篇帖子: PHP 数组
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表