应采用composer create-project创建独立项目、flyenv管理php版本、laradock实现容器隔离三重方案:先用create-project分别拉取laravel 7.x和8.83.0并锁定稳定版;再用flyenv为各项目绑定对应php版本;最后通过独立laradock副本或override文件实现运行时环境彻底隔离。

在同一台开发机上同时维护Laravel 7.x老项目和Laravel 8.83新模块,全局安装会直接导致老项目报错“Class 'Illuminate\Foundation\Application' not found”,必须让不同版本的Laravel框架彼此隔离、按需加载,且不互相覆盖vendor目录或全局Composer依赖。
用Composer create-project按需创建独立项目
这是最轻量、最安全的方式,适用于新项目启动或临时调试。
执行composer create-project laravel/laravel blog7 --stability=stable --prefer-dist "7.*",会拉取最新7.x稳定版(如7.30.6),所有依赖锁定在7.x范围内,与系统其他项目完全无关。
再开一个终端,执行composer create-project laravel/laravel blog8 --stability=stable --prefer-dist "8.83.0",明确指定8.83.0小版本,避免自动升到8.84后因中间件签名变更引发登录失效。
【注意:不要省略--stability=stable】否则可能拉到dev-main分支,导致autoload失败。
用FlyEnv管理PHP+Laravel运行时环境
适合Mac用户,解决“同一台机器跑多个Laravel项目却要频繁切换PHP版本”的痛点。
第一步:通过Homebrew安装FlyEnv:brew tap flyenv/flyenv && brew install flyenv
第二步:安装多套PHP环境:flyenv install 7.4.33 && flyenv install 8.1.28 && flyenv install 8.2.12
第三步:为每个Laravel项目绑定专属PHP版本。进入blog7目录,执行flyenv local 7.4.33;进入blog8目录,执行flyenv local 8.2.12。此后该目录下所有php命令自动指向对应版本,Composer也会调用匹配的PHP二进制文件解析依赖。
这一步做完,两个项目即使都执行composer require spatie/laravel-permission,也不会因PHP版本差异导致扩展编译失败或类型错误。
用Laradock实现容器级版本隔离
当项目依赖差异极大(比如一个要Redis 6,另一个必须用Redis 5)、或团队协作需环境一致时,必须上Docker。
方法一:基于laradock快速启动单版本环境
克隆laradock:git clone https://github.com/laradock/laradock.git my-laradock-7
复制配置:cd my-laradock-7 && cp .env.example .env
修改.env中PHP_VERSION=7.4和LARAVEL_VERSION=7,保存后执行docker-compose up -d nginx mysql redis即可获得完整Laravel 7运行栈。
方法二:为不同项目维护独立laradock副本
再克隆一份:git clone https://github.com/laradock/laradock.git my-laradock-8
进入该目录,将.env中PHP_VERSION改为8.2,LARAVEL_VERSION设为8,并把APP_CODE_PATH_HOST指向你的Laravel 8项目路径。
【关键:绝对不能共用同一个laradock目录启动两个版本】否则docker-compose会复用已构建镜像,导致PHP版本被覆盖。
方法三:用docker-compose.override.yml做细粒度控制(进阶)
在laradock根目录新建docker-compose.override.yml,写入:
version: "3.8"
services:
workspace:
environment:
- LARAVEL_VERSION=8.83.0
volumes:
- ../my-laravel-8-app:/var/www
这样无需复制整个laradock,也能让同一份基础配置适配不同Laravel版本。











