laravel 6 在现代 mac 上无法运行,因其强制依赖 php 7.2–7.4,而 macos homebrew 默认安装 php 8.2+,且 symfony/console 等包在 php 8.0+ 下存在签名不兼容;必须降级 php 至 7.4 或使用 docker 隔离环境。

Laravel 6 已停止官方支持,Mac 上强行安装会遇到 PHP 版本、扩展、Composer 依赖三重不兼容,不建议用于新项目。 它要求 PHP 7.2–7.4,而 macOS 当前主流 PHP 环境(Homebrew 默认装的是 PHP 8.2+)已不满足;且 Laravel 6 的 composer create-project 在 PHP 8.0+ 下会因 symfony/console 等包版本冲突直接失败。
为什么 Laravel 6 在现代 Mac 上跑不起来
Laravel 6 的最后维护版本发布于 2021 年 9 月,其 composer.json 锁死在 "php": "^7.2.5",且依赖的 symfony/event-dispatcher、ramsey/uuid 等包早已弃用 PHP 7.x 专属 API。你在 macOS 上执行 composer create-project laravel/laravel blog "6.*" 时,大概率看到:
Root composer.json requires php ^7.2.5 but your php version (8.2.12) does not satisfy that requirement.- 或更隐蔽的错误:
Declaration of Illuminate\Console\Command::execute() must be compatible with Symfony\Component\Console\Command\Command::execute()
这不是配置问题,是语言层不兼容 —— 就像试图用 USB-C 线接老式 PS/2 接口。
如果必须运行旧 Laravel 6 项目(如维护遗留系统)
你得「降级」PHP 环境,不能用 Homebrew 默认的最新版:
- 先卸载当前 PHP:
brew uninstall php - 安装 PHP 7.4(Laravel 6 最后兼容的稳定版):
brew install php@7.4 - 强制切换系统默认 PHP:
brew link --force php@7.4,然后确认php -v输出为7.4.x - 确保关键扩展启用:
php -m | grep -E 'mbstring|openssl|pdo|tokenizer|xml|ctype|json';若缺intl,补装:brew install icu4c && brew reinstall php@7.4 --with-intl - 再运行:
composer create-project laravel/laravel blog "6.*"
注意:PHP 7.4 自 2022 年 11 月起已 EOL,无安全更新,仅限离线开发或内网维护场景。
替代方案:用 Docker 隔离旧环境(推荐)
不污染主机 PHP,避免权限与路径混乱。只需一个 docker-compose.yml:
version: '3.8'
services:
app:
image: php:7.4-apache
volumes:
- ./laravel6:/var/www/html
ports:
- "8000:80"
然后:
- 在项目目录放好 Laravel 6 的代码(含
vendor) - 启动:
docker-compose up -d - 访问
http://localhost:8000
Docker 镜像自带完整 PHP 7.4 + Apache + 扩展,无需手动编译或改 php.ini,也避开了 Homebrew 多版本 PHP 切换的坑。
真正麻烦的不是装 Laravel 6,而是它背后一整套已停更的生态——包括你顺手装的 phpunit、mockery、甚至 composer 自身。除非合同明确要求,否则别碰。











