CentOS 7下无需重复安装即可切换PHP版本的方法咨询
在CentOS 7上切换PHP版本的方法
当然有完美的解决方案!在CentOS 7上,你可以通过**Software Collections (SCL)**工具同时安装多个PHP版本,并且能轻松在它们之间切换,完全不用反复卸载重装。下面是一步步的实操指南:
1. 安装SCL源
首先需要添加CentOS官方的SCL软件源,这样才能获取到PHP 5.6这类非默认版本的包:
yum install centos-release-scl -y
2. 安装所需的PHP版本
你可以保留系统默认的PHP 5.4,同时安装PHP 5.6:
- 安装PHP 5.6及常用组件(比如FPM,如果需要配合Web服务器使用):
yum install rh-php56 rh-php56-php rh-php56-php-fpm rh-php56-php-mysqlnd -y
- 系统默认的PHP 5.4如果还没装,直接用
yum install php php-fpm -y安装即可,两者不会冲突。
3. 切换PHP版本的方式
临时切换(仅当前终端会话生效)
如果你只是临时需要用某个版本,比如在终端调试代码时:
- 切换到PHP 5.6:
scl enable rh-php56 bash
执行完后,用php -v验证,会显示当前是PHP 5.6。退出这个终端窗口,就会自动回到系统默认的PHP 5.4。
- 回到默认版本:直接执行
exit退出当前SCL启用的shell环境即可。
永久切换(针对单个用户)
如果某个用户需要长期使用PHP 5.6,可以修改用户的bash配置:
- 编辑用户主目录下的
.bashrc文件:
vi ~/.bashrc
- 在文件末尾添加一行:
source scl_source enable rh-php56
- 使配置生效:
source ~/.bashrc
之后这个用户每次登录终端,默认就是PHP 5.6版本。如果要切回默认的5.4,只需把刚才添加的那行注释掉或删除,再执行source ~/.bashrc即可。
针对Web服务器切换版本
如果你的应用是部署在Apache或Nginx上,需要让Web服务使用对应版本的PHP:
- Apache环境:
可以选择使用PHP-FPM的方式,启动PHP 5.6的FPM服务:
然后修改Apache的虚拟主机配置,添加反向代理规则,将PHP请求转发到PHP 5.6的FPM端口(默认是9000,如果你同时运行5.4的FPM,需要修改5.6的端口为9001避免冲突)。scl enable rh-php56 'systemctl start rh-php56-php-fpm' - Nginx环境:
同样先启动对应版本的PHP-FPM服务,然后在Nginx的server配置块中,修改fastcgi_pass指向对应版本的FPM端口即可,比如:location ~ \.php$ { fastcgi_pass 127.0.0.1:9001; # PHP 5.6的FPM端口 fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
注意事项
- SCL安装的软件都存放在
/opt/rh/目录下,不会覆盖系统默认的软件包,所以多个版本可以共存。 - 不同版本的PHP扩展需要单独安装,比如要给PHP 5.6装Redis扩展,需要安装
rh-php56-php-pecl-redis这类包,而不是默认的php-pecl-redis。
内容的提问来源于stack exchange,提问作者Gautham Sreenivasan
相关产品推荐
相关产品推荐

