在服务器上装 PHP,是不是遇到过这种情况?老项目必须用 PHP7,新项目又得用 PHP8,总不能装两台服务器吧?新手想让两个版本共存,对着命令行半天不知道从哪下手。其实啊,Linux 上实现 PHP7 和 PHP8 共存不难,今天就带大家实战操作,从安装到扩展配置,再到测试方法,一步一步来,新手也能搞定,我们在使用过程中总结了不少技巧,一起往下看吧!
先搞懂,为啥要多版本共存?直接装新的不行吗?
可能有新手会问,直接装 PHP8 不行吗?非要留着 PHP7?还真不行,原因有两个:
- 老项目兼容性:很多几年前的项目,用的框架只支持 PHP7,升级到 PHP8 会报错,小编之前就遇到过,一个客户的老网站,升到 PHP8 后直接打不开,只能退回到 PHP7。
- 开发测试需要:做开发的话,得测试项目在不同 PHP 版本下的运行情况,总不能来回卸载安装吧,多版本共存能省不少事。
所以啊,服务器上多版本 PHP 共存,对新手来说看着复杂,其实是刚需,学会了能解决很多麻烦。
实战步骤:先装 PHP7,再装 PHP8,顺序别搞反
装多版本得有顺序,先装低版本再装高版本,不容易出冲突,以 CentOS 为例:
第一步:安装 PHP7.4
- 先加源,输入 “sudo yum install epel-release”,再输入 “sudo rpm -Uvh https://rpms.remirepo.net/enterprise/remi-release-7.rpm”,这俩源能拿到 PHP7 的安装包。
- 然后启用 PHP7.4 的源,“sudo yum-config-manager –enable remi-php74”,别选错了,选成其他版本就麻烦了。
- 安装 PHP7.4 和常用扩展,“sudo yum install php74 php74-php-fpm php74-php-mysqlnd php74-php-gd”,等它跑完,输入 “php74 -v”,显示版本号就说明装好了。
小编第一次装的时候,忘了启用源,直接输安装命令,结果提示 “没有可用包”,折腾了半小时才发现问题。
第二步:安装 PHP8.1
PHP7 装完再装 PHP8,步骤差不多但命令不一样:
- 启用 PHP8.1 的源,“sudo yum-config-manager –enable remi-php81”,注意这里是 81,对应 PHP8.1。
- 安装 PHP8.1,“sudo yum install php81 php81-php-fpm php81-php-mysqlnd php81-php-gd”,和 PHP7 的包名不一样,带 “php81” 前缀,别输错。
- 输 “php81 -v”,能看到版本号就成,这样 PHP7 和 PHP8 就都装好了。
这时候有人会问,两个版本的命令不一样,怎么区分啊?PHP7 用 “php74” 开头,PHP8 用 “php81” 开头,比如启动服务,PHP7 是 “sudo systemctl start php74-php-fpm”,PHP8 是 “sudo systemctl start php81-php-fpm”,记不住的话可以写个小纸条贴屏幕上。
多版本切换:想用哪个就用哪个,设置很简单
装好了还得会切换,不然默认只用一个版本,白装了。
- 先看当前默认版本,输 “php -v”,会显示现在用的是哪个,一般默认是后装的版本。
- 想切换到 PHP7.4,输 “sudo update-alternatives –set php /usr/bin/php74”,再输 “php -v”,就变成 7.4 了。
- 切换到 PHP8.1 的话,输 “sudo update-alternatives –set php /usr/bin/php81”,同样用 “php -v” 验证。
这个切换命令挺好用的,小编测试项目的时候,一天能切换好几次,熟练了几秒钟就搞定。
扩展安装技巧:不同版本扩展别装混了
装扩展的时候,最容易犯的错就是装混版本,PHP7 的扩展得用 PHP7 的命令装。
- PHP7.4 装扩展:比如装 redis 扩展,输 “sudo yum install php74-php-redis”,前面必须带 “php74-”。
- PHP8.1 装扩展:同样装 redis,就得输 “sudo yum install php81-php-redis”,前缀换成 “php81-”。
小编有次手快,给 PHP8 装了 PHP7 的扩展,结果启动报错,查了半天才发现是扩展版本不对,新手一定要注意这个细节。
测试方法:确保两个版本都能用,别白忙活
装完了得测试,不然不知道能不能用,方法很简单:
- 新建两个测试文件,一个叫 “test7.php”,里面写 “”,保存到 “/var/www/html” 目录。
- 再建一个 “test8.php”,内容一样,然后配置 Web 服务器,让 test7.php 用 PHP7.4 解析,test8.php 用 PHP8.1 解析(具体配置可以搜 “Nginx 多 PHP 版本配置”,步骤有点多,这里就不细说了)。
- 打开浏览器,访问这两个文件,分别显示 “7.4.x” 和 “8.1.x” 就说明成功了,小编每次装完都这么测,心里踏实。
要是显示不出来,先检查文件路径对不对,再看看 Web 服务器配置,一般都是这两个地方出问题。
其实啊,多版本共存看着复杂,实操起来就那几步,新手别怕,多试两次就熟了。小编建议刚开始用 CentOS 练手,比 Ubuntu 的多版本配置简单点,等熟练了再试其他系统。记住,遇到报错别慌,把错误信息复制下来搜一搜,基本都有解决办法,我们在使用中都是这么过来的,希望能帮到你。