当前位置:首页>php>PHP 多版本共存实战:7.4 和 8.3 同时跑,互不干扰

PHP 多版本共存实战:7.4 和 8.3 同时跑,互不干扰

  • 2026-08-22 02:10:50
PHP 多版本共存实战:7.4 和 8.3 同时跑,互不干扰

PHP 多版本共存实战:7.4 和 8.3 同时跑,互不干扰

如果你手头同时维护着老项目和新项目,一定经历过这种时刻:老项目还在用 PHP 7.4,新项目想上 8.3,可是本机只有一个 PHP。

于是你开始来回折腾:装完 7.4 忘装 8.x,切版本要改一堆配置,更别提两个项目同时要跑、谁都不肯让步的时候。今天这篇文章就讲清楚:多版本共存到底难在哪,以及怎么让 7.4 和 8.3 在同一台机器上和平相处。

一、为什么需要多版本共存

这不是矫情,是真实需求:

  • 老项目动不了
    :线上还是 PHP 7.x,本地必须保持一致,否则上线才暴露兼容问题。
  • 新项目有底线
    :Laravel 10/11、新框架普遍要求 PHP 8.1+,你想尝新就得有新版。
  • 扩展不通用
    :swoole、redis 这类扩展对不同 PHP 版本要分别编译,只装一个版本满足不了全部项目。

结论很简单:开发者需要的不只是"一个 PHP",而是一台机器上同时存在多个版本,并且每个项目用哪个版本,自己说了算。

二、传统做法有多麻烦

在讲省事方案之前,先看看传统路线有多折腾,你才知道多版本共存的含金量。

用 Homebrew 装多版本 PHP,是社区最常见的方案,但坑不少:

  • 版本切换靠 brew unlink / brew link,或者手动改 PATH,顺序一错,php -v 就显示老版本。
  • 每个版本的 php-fpm 端口要手动分配,改错了直接 502。
  • 编译扩展时,phpize 用的是哪个版本,决定扩展装到哪,经常出现"扩展装了,但 php -m 看不到"。

这套流程不是不能用,而是每次都要小心翼翼,尤其赶项目的时候,时间全耗在环境上了。

三、Xserver 的做法:同时安装、同时启动

Xserver 的思路是让多版本成为常态,而不是特例。

打开应用,进入「PHP」菜单,你会看到完整的版本列表,从 5.6 到 8.5 一共 8 个版本。想用几个就装几个,比如 7.4 和 8.3:

  1. 点击 7.4 对应的「安装」,等待进度条完成。
  2. 再点击 8.3 对应的「安装」,两个版本互不干扰。
  3. 安装完成后,两个版本的「启动」按钮都亮起来,可以同时启动。

每个版本都有独立的配置、php.ini、扩展目录和日志,互不影响。这意味着:

  • 7.4 的 php.ini 改坏了,8.3 一点感觉都没有;
  • 7.4 上加载的扩展,不会污染 8.3;
  • 某个版本挂了,重启它就行,其他版本照常服务。

四、让每个站点用上自己的版本

版本装好了,怎么让不同项目用不同版本?答案在站点设置里。

创建站点时,表单里有一个「PHP 版本」下拉框:

站点名称: legacy-app 域名:     legacy.test 端口:     80 目录:     ~/Projects/legacy-app PHP 版本: 7.4   ← 老项目指定 7.4 

再创建一个新项目站点,这次选择 8.3:

站点名称: modern-api 域名:     api.test 端口:     8080 目录:     ~/Projects/modern-api PHP 版本: 8.3   ← 新项目指定 8.3 

保存后,两个站点各自用自己的 PHP 版本跑起来。访问 legacy.test 是 7.4,访问 api.test 是 8.3,互不干扰。

如果站点建好之后想换版本,编辑站点,把「PHP 版本」改掉再保存即可,不需要重装任何东西。

五、命令行怎么用:切换默认版本

有些操作绕不开命令行,比如 composer install、跑 artisan 命令。终端里的 php -v 显示哪个版本,取决于当前注册到 PATH 的 PHP。

Xserver 在「PHP」列表里提供了环境变量管理入口,想切换默认版本时:

  1. 在目标版本那一行找到环境变量相关的操作(比如「注册」或切换入口)。
  2. 切换后新开一个终端窗口,再执行 php -v,看到的就是新版本。

注意:终端有缓存,旧窗口里看到的还是老版本,这不是没生效,开个新终端就好。这一点和 phpStudy、MAMP 等工具的行为一致。

常见问题

1. 终端里 php -v 版本不对

先确认是不是旧终端。新开一个终端再试;如果还不对,去 Xserver 的 PHP 列表切换环境变量,然后重新打开终端。

2. 老项目在 7.4 下报错,8.3 没问题

这是版本差异,先确认站点的「PHP 版本」选的是 7.4,再看项目本身是否用了 7.4 不支持的新语法(比如 8.0 的构造器属性提升)。

3. 某个版本启动失败

看对应版本的日志,常见原因是端口被占用或 php.ini 写错。修好后在 Xserver 里点「重启」即可,不影响其他版本。

最后

多版本共存解决的是"环境打架"的问题:装一次,长期受益。装好之后,下一步就是让调试更顺手——用 Xdebug 给 PHP 断点调试,再也不用 var_dump 打天下,这个我们下篇讲。

如果搭建过程中遇到问题,欢迎在评论区留言,也可以到 Xserver 官网反馈 bug 和建议。下载地址:https://x-server.ltd。

最新文章

随机文章