centos-nginx 下部署多版本 PHP ,那 PHP -fpm 是如何定位对应版本的 PHP ?

2019-07-11 22:56:41 +08:00
 azev
或者应该说如何定位对应版本的 php-cgi ?

目前只知道 nginx 可以通过不同的 fastcgi_pass 文件(或者端口)对应不同版本的 php-fpm
但是 php-fpm 怎么定位对应版本的 php(-cgi)呢?
看 php-fpm 中没有关于 php(-cgi)的配置节点啊
1990 次点击
所在节点    问与答
22 条回复
msg7086
2019-07-11 23:11:39 +08:00
PHP-FPM 就是 PHP 啊,为什么要去定位别的 PHP/PHP-CGI 呢。
azev
2019-07-11 23:20:31 +08:00
@msg7086 多谢 这么说的话 确实能解释

但是那个 php 文件和 php-cgi 文件目前是做什么用呢?我看依然还存在那个文件
starsriver
2019-07-11 23:23:25 +08:00
fpm 可以认为是 cgi 的优化部件,cgi 是基础啊,毕竟命令行组件不能丢。以及没有定位一说。

可以通过路径对应版本

可以装多环境,cgi 也多版本
azev
2019-07-11 23:29:03 +08:00
@starsriver 多谢
如果 php-cgi 是必需的基础,那 fpm 是不是得知道怎么找到他然后执行?
lhx2008
2019-07-11 23:35:34 +08:00
starsriver
2019-07-11 23:37:03 +08:00
@azev fpm 是编译在 php 核心的, cgi 也是,为什么会找不到呢。。和版本是对应的,你如果不理解,就先认为是一个相对的固定路径吧
azev
2019-07-11 23:49:27 +08:00
" fpm 是编译在 php 核心的, cgi 也是 "这个能再解释下吗?


因为现在看到是三个独立的文件
sbin/php-fpm
bin/php
bin/php-cgi
azev
2019-07-11 23:50:40 +08:00
@msg7086
是不是说 php 文件和 php-cgi 文件实际上是可以删除的?对一个 php 网站并没有影响?
msg7086
2019-07-12 05:01:02 +08:00
@azev 你可以看看这三个文件分别有多大。

PHP-FPM 虽然叫 FP 管理器,但其实他自己就是 PHP,运行以后自己 Fork 一堆就能跑了。
他不是去找其他的 PHP 然后再启动其他进程的。

当然,PHP 5.4 之前 FPM 结构和现在不同。之前仅仅是一个 FCGI 管理器,需要 CGI 才能跑。

所以,现在如果要部署多版本 PHP,那就要部署多版本的 PHP-FPM,每个版本监听一个套接字,然后 Nginx 通过转发到不同套接字来支持多个版本。
azev
2019-07-12 08:40:02 +08:00
@msg7086
多谢 我看了下 大小是这样

-rwxr-xr-x 1 root root 4.5M Oct 31 2018 php
-rwxr-xr-x 1 root root 4.4M Oct 31 2018 php-cgi
-rwxr-xr-x 1 root root 4.7K Oct 31 2018 phpize

-rwxr-xr-x 1 root root 4.5M Oct 31 2018 php-fpm

这是说这三个基本是同一个程序?
这样是不是重复了不少代码?
msg7086
2019-07-12 08:45:02 +08:00
@azev 嗯,核心都全的,就是外部接口不一样。
azev
2019-07-12 08:56:38 +08:00
@msg7086 多谢 这样基本清楚了

还有个问题 这个 fpm 如何确定相应的 php.ini 呢?
VD
2019-07-12 09:58:52 +08:00
@azev 你查下 PHP 编译参数,即可知晓。
azev
2019-07-12 10:30:34 +08:00
@msg7086
刚才测试了下
没有去 yum 安装 php
只 yum 安装了 php-fpm
然后 php 文件解析没有任何问题

现在 yum 还能安装 php 只是为了保持一个系统兼容?
azev
2019-07-12 10:31:39 +08:00
@VD 多谢
不过目前我的情况貌似是需要显式指定 php.ini 文件位置
因为要部署两套 php-fpm
VD
2019-07-12 10:34:20 +08:00
@azev -h 有答案
azev
2019-07-12 10:51:24 +08:00
@VD 多谢
是不是启动 php-fpm 时加上 -c 参数?
sarices
2019-07-12 10:55:39 +08:00
phpfpm 监听不同端口就好了,如果只是测试,直接跑 docker 部署到对应端口
azev
2019-07-12 11:45:20 +08:00
@sarices 嗯 docker 这个可行
azev
2019-07-12 11:59:43 +08:00
@msg7086
5.3 版本下 fpm 和 php 是分开的?这时需要定位 php 吗?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/582183

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX