一台电脑上同时运行 laravel 8 和 laravel 11 完全可行,关键在于按项目隔离环境、用 composer create-project 分别指定版本(如 "8.*" 和 "11.*"),统一使用 php 8.2+ 与 composer 3.x,并确保各项目独立的 .env、数据库名及端口,避免缓存与密钥交叉污染。

一台电脑上同时运行 Laravel 8 和 Laravel 11 完全可行,关键不是“装多个全局 Laravel”,而是按项目隔离环境、按需指定版本、精准控制依赖。Laravel 本身不提供全局版本切换命令,它的版本由每个项目的 composer.json 决定——这才是多版本共存的底层逻辑。
一、用 Composer 按项目锁定 Laravel 版本
每个 Laravel 项目都自带独立的 vendor/ 目录和 composer.lock,互不影响。你不需要“卸载旧版”或“升级全局框架”,只需在创建时明确指定版本号:
- 新建 Laravel 8 项目(稳定长期支持版):
composer create-project laravel/laravel blog8 "8.*" --no-interaction - 新建 Laravel 11 项目(要求 PHP 8.2+、Composer 3.x):
composer create-project laravel/laravel blog11 "11.*" --no-interaction
注意:不要加 -g 或 --global。Laravel 不是全局 CLI 工具,所谓 “全局安装 Laravel” 是常见误解。真正全局的是 laravel/installer,但它只用于快速脚手架,且新版已弃用;直接用 create-project 更可靠、更透明。
二、确保底层环境兼容所有版本
Laravel 8 和 11 对 PHP 和 Composer 要求不同,必须统一满足高阶需求,否则低版本项目可能意外报错:
- PHP 版本选 8.2 或 8.3:Laravel 8 支持到 PHP 8.3,Laravel 11 强制要求 ≥8.2。装一个 PHP 8.2.2(Windows 解压版或 WSL2 中 apt 安装)即可通吃。
-
Composer 必须是 3.x:Laravel 11 的依赖解析依赖 Composer 3 的插件机制。执行
composer --version确认输出为3.x。若仍是 2.x,请卸载后从 官网 下载最新安装脚本重装。 -
扩展不能缺:
mbstring、openssl、pdo、tokenizer、xml、curl全部启用。Windows 用户尤其注意php.ini中extension=mbstring是否被注释,改完需重启 Web 服务(如 Apache 或 PHP-FPM)。
三、数据库与配置隔离实操
两个项目即使连同一台 MySQL,也必须使用不同数据库名 + 独立 .env,避免迁移冲突或数据误写:
- 在
blog8/.env中设:DB_DATABASE=laravel8_devSESSION_DRIVER=database(可选,但需单独运行php artisan session:table && php artisan migrate) - 在
blog11/.env中设:DB_DATABASE=laravel11_devDB_COLLATION=utf8mb4_unicode_ci(MySQL 8.0+ 默认utf8mb4_0900_ai_ci,Laravel 11 建议显式降级兼容) - 启动服务时指定端口,避免占用冲突:
cd blog8 && php artisan serve --port=8001cd blog11 && php artisan serve --port=8002
四、常见陷阱与绕过方案
实际切换项目时,最易踩坑的不是代码,而是缓存与密钥残留:
-
别复用
.env文件:复制模板后务必运行php artisan key:generate。Laravel 8 和 11 的加密密钥格式一致,但混用会导致 Session 失效、CSRF 报错。 -
清空配置缓存再切换:进项目目录后执行:
php artisan config:clear && php artisan cache:clear
防止旧项目缓存污染新项目运行时行为。 -
MySQL 连接失败?先查静默原因:Laravel 11 启动时会校验连接,但错误常不显示。确认:
–DB_PORT=3306是否被 Windows 防火墙拦截
–DB_USERNAME=root在 MySQL 8.0+ 是否仍可用(默认改用caching_sha2_password认证,需重置为mysql_native_password)
不需要虚拟机、Docker 或复杂工具链,靠 Composer 的项目级依赖管理 + 统一高兼容 PHP 环境,就能干净利落地并行开发 Laravel 8 和 11。核心就一条:每个项目是独立生命体,版本、配置、数据库、缓存,全部划清边界。











