laravel 5.2 已停止维护,不建议新项目使用;若需安装,须锁定 php ≤7.3、降级 composer 至 2.2.x、禁用平台检查与自动升级,并手动处理 mcrypt、openssl 和 redis 兼容性问题。

Laravel 5.2 已停止维护,官方不再提供安全更新,不建议在新项目中使用;若因历史项目必须安装,需手动锁定 PHP 版本(≤7.3)并禁用 Composer 默认的现代依赖解析策略。
确认 PHP 版本是否兼容 Laravel 5.2
Laravel 5.2 要求 PHP 5.5.9–7.3.x,且不支持 PHP 7.4+。macOS 默认自带的 PHP(如 8.1+)会直接导致 composer create-project 失败或后续报错 Class 'Illuminate\Foundation\Application' not found。
- 运行
php -v查看当前版本;若 ≥7.4,必须切换到旧版 PHP - 推荐用 Homebrew 安装 PHP 7.3:
brew install php@7.3 - 临时启用它:
export PATH="/opt/homebrew/opt/php@7.3/bin:$PATH"(M1/M2)或/usr/local/opt/php@7.3/bin:$PATH(Intel) - 验证:
php -v应输出类似PHP 7.3.33
安装 Composer 并配置国内镜像
新版 Composer(2.5+)默认拒绝安装已废弃的旧包,会卡在 predis/predis 或 monolog/monolog 等依赖上。必须降级或显式允许过时包。
- 安装 Composer 2.2.x(兼容性最稳):
curl -sS https://getcomposer.org/installer | php -- --version=2.2.22 - 移动并设为全局:
sudo mv composer.phar /usr/local/bin/composer - 切国内源避免超时:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 关键一步:允许安装过时依赖(否则报
Could not find package ... in a version matching...):composer config --global platform-check false
创建 Laravel 5.2 项目并绕过自动升级
直接运行 composer create-project laravel/laravel 会默认拉取最新版(Laravel 13+),必须强制指定版本号,且禁用自动推荐替换包。
- 执行命令:
composer create-project laravel/laravel=5.2.* myapp --no-interaction --prefer-dist - 如果仍失败,加
--ignore-platform-reqs强制忽略 PHP 版本警告(仅限本地开发) - 生成后立即进入目录:
cd myapp - 复制环境文件:
cp .env.example .env - 生成密钥:
php artisan key:generate(若报Mcrypt错误,说明 PHP 缺扩展 —— Laravel 5.2 依赖mcrypt,但 macOS 10.15+ 已移除;需用pecl install mcrypt或改用 Docker)
启动服务前必须处理的兼容性断点
Laravel 5.2 的内置服务器 php artisan serve 在 PHP 7.3 下可能因 ext-mcrypt 缺失或 OpenSSL 版本过高而崩溃,常见错误是 Call to undefined function mcrypt_create_iv() 或 SSL routines:ssl3_get_record:wrong version number。
- 首选方案:用 Valet(仅 macOS):
composer global require laravel/valet→valet install→valet park,然后访问myapp.test - 次选方案:用内置 server 但绕过 HTTPS 检查:
php -S localhost:8000 -t public(不走 Artisan,跳过 TLS 相关逻辑) - 若要用
artisan serve,必须确保 PHP 编译时启用了openssl且版本 ≤1.1.1;可用php -i | grep openssl检查 - Redis 配置注意:Laravel 5.2 默认用
predis/predis,不是phpredis扩展;不要在php.ini中启用extension=redis.so,否则会冲突
真正麻烦的从来不是“怎么装”,而是“装完之后哪一行代码会突然崩掉”——比如 Queue::push() 在 PHP 7.3 + Redis 6 下默认序列化方式变更,或 Carbon::now() 因时区缓存未清导致测试全挂。老版本没有兜底机制,出问题只能翻 commit 记录或硬 patch vendor。











