现在有个需求,就是 php5.6 和 php7.2 需要在同一台机器上运行
多个版本PHP共存
根据 nginx和PHP的通信方式,有2种方式实现:一种是TCP,一种是unix socket。
第一种:TCP 通信
TCP通信是通过 IP+端口号,我们可修改相应端口号来实现多PHP版本共存
设置 php5.6 相关参数
php5.6 的安装目录是 /usr/local/php56,使用默认的 9000 端口运行
nginx 相关配置
server {
server_name php56.dev.com;
... ...
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000; // 关注这里即可
... ...
}
}
设置 /usr/local/php56/etc/php-fpm.conf 文件里 listen 的值即可:
listen = 127.0.0.1:9000
设置 php7.2 相关参数
php7.2 的安装目录是 /usr/local/php72,使用 9100 端口运行
nginx 相关配置:
server {
server_name php72.dev.com;
... ...
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9100; // 注意这里,和PHP5.6唯一的区别就是端口号不一样
... ...
}
}
php 修改 /usr/local/php72/etc/php-fpm.d/www.conf 文件里面的 listen 值即可
listen = 127.0.0.1:9100
最后重启 NGINX 和 PHP 即可
第二种:unix socket 通信
创建 socket 文件并修改权限,
> touch /dev/shm/php5.sock
> touch /dev/shm/php7.sock
> chmod 777 /dev/shm/php5.sock
> chmod 777 /dev/shm/php7.sock
图方便,直接设置 777 即可
php5.6 相关设置
nginx 配置:
server {
... ...
location ~ \.php$ {
fastcgi_pass unix:/dev/shm/php5.sock;
... ...
}
}
PHP设置 /usr/local/php5.6/etc/php-fpm.conf 文件里 listen 的值即可:
listen = /dev/shm/php5.sock
php7.2 相关设置
nginx 配置:
server {
... ...
location ~ \.php$ {
fastcgi_pass unix:/dev/shm/php7.sock;
... ...
}
}
php 修改 /usr/local/php72/etc/php-fpm.d/www.conf 文件里面的 listen 值即可
listen = /dev/shm/php7.sock
最后重启 php 和 nginx ,完工!