推荐使用 composer create-project 指定版本安装 Laravel,如 laravel/laravel:^8.0;laravel/installer 不支持版本参数且存在兼容风险;需确保 PHP 版本匹配,并注意装后维护安全问题。

直接用 composer create-project 加版本约束就能装指定 Laravel 版本,不需要先装旧版 Composer 或改全局配置。
用 create-project 指定 Laravel 版本号
Composer 官方推荐方式,也是最可靠的方法。它会拉取对应版本的 laravel/laravel 项目骨架(含 composer.json),再递归安装其依赖的 Laravel 组件(如 illuminate/support 等)到匹配版本。
常见写法:
-
composer create-project laravel/laravel:^8.0 myapp—— 安装 8.x 最新小版本(如 8.83.27) -
composer create-project laravel/laravel:8.75.0 myapp—— 精确安装 8.75.0 -
composer create-project laravel/laravel:7.* myapp—— 安装任意 7.x 版本(通常为 7.30.6)
注意:laravel/laravel 是应用骨架包,不是框架核心;它的 composer.json 中已锁死各 illuminate/* 包的版本范围,所以你指定骨架版本,就等于间接锁定了整个框架版本。
为什么不用 composer global require laravel/installer?
因为 laravel/installer 工具本身有版本迭代,新版 installer 默认只创建最新 LTS 或稳定版 Laravel(比如 v4.4+ 的 installer 默认建 Laravel 11),它不支持传入版本参数。即使你降级了 laravel/installer,也无法保证它能识别并拉取早已 EOL 的旧版(如 5.5、6.x)。
更关键的是:laravel/installer 底层其实也是调用 create-project,绕路没意义,还多一层兼容风险。
装完发现版本不对?检查这三处
常见“以为装了旧版,实际跑的是新版”的原因:
- 运行了
php artisan --version,但项目里混进了高版本的artisan或缓存 —— 先删掉bootstrap/cache/config.php和bootstrap/cache/services.php -
composer.json里"laravel/framework"的版本约束被手动改宽(如从"^8.75"改成"^8.0 || ^9.0"),后续composer update就可能升上去 - 执行了
composer update且没加--with-all-dependencies或锁死策略,导致部分 illuminate 包升级,引发不兼容(例如 8.x 项目里illuminate/database升到 9.x 就会报错Class "Illuminate\Support\ServiceProvider" not found)
PHP 版本和旧 Laravel 的硬性匹配
Laravel 各版本对 PHP 有明确最低要求,装之前必须确认本地 PHP 版本满足条件,否则 create-project 会失败或中途退出:
- Laravel 9.x → PHP >= 8.0
- Laravel 8.x → PHP >= 7.3
- Laravel 7.x → PHP >= 7.2.5
- Laravel 6.x → PHP >= 7.2
- Laravel 5.8 → PHP >= 7.1.3
如果 PHP 版本不够,composer create-project 会报类似 Your requirements could not be resolved to an installable set of packages.,错误信息里往往带 laravel/framework v8.x.x requires php ^7.3 这类提示 —— 别忽略它,这是最直接的线索。
真正麻烦的不是“怎么装”,而是装完后长期维护:旧版 Laravel 停止安全更新后,composer update 可能悄悄引入有漏洞的依赖,或者因第三方包升级而崩溃。动手前,先想好这个项目是否真需要钉在旧版本上。










