用 create-project 安装旧版本必须带版本约束符(如^、~或精确版本号),不能只写分支名;laravel/laravel 5.5+才支持,5.4需用laravel/installer;symfony/skeleton适用于4+,3.x用framework-standard-edition;需确认版本在Packagist存在、Composer兼容性及PHP版本匹配。

用 create-project 指定旧版本必须带版本号,不能只写分支名
很多人试过 composer create-project laravel/laravel myapp 5.8 或 symfony/skeleton myapp 4.4,结果还是装了最新版——因为 create-project 默认把没带符号的字符串当分支名处理,而 5.8 和 4.4 并不是 Git 分支,是 Composer 的版本约束。正确做法是加 ^、~ 或精确版本号。
-
laravel/laravel项目模板从 5.5 起才支持create-project安装旧版;5.4 及更早需用laravel/installer -
symfony/skeleton从 Symfony 4 开始才成为标准模板,3.x 用symfony/framework-standard-edition - 版本号要查官方 Packagist 页面 或 symfony/skeleton 确认是否真实存在(比如
5.8.*是无效的,Laravel 没有 5.8 版)
Laravel 旧版本安装:注意模板包和框架版本的对应关系
laravel/laravel 是应用模板,它依赖 laravel/framework。指定模板版本时,实际拉取的是该模板在 Packagist 上发布的某个 tag,而该 tag 锁定的 laravel/framework 版本才是关键。例如 v5.7.29 模板固定使用 "laravel/framework": "5.7.*"。
- 安装 Laravel 5.7 最新版模板:
composer create-project laravel/laravel myapp "5.7.*"
- 安装 Laravel 6.20.27(最后一个 6.x bugfix 版):
composer create-project laravel/laravel myapp "6.20.27"
- 想装 Laravel 5.4?必须换命令:
composer global require "laravel/installer:~1.4"
,再运行laravel new myapp --5.4
- 如果提示
Could not find package laravel/laravel with version 5.6.*,说明该版本模板已从 Packagist 移除(如 5.6 在 2022 年后被下架),只能 clone 对应 tag 的 GitHub 仓库手动初始化
Symfony 旧版本安装:区分 skeleton 和 framework-standard-edition
Symfony 4+ 推荐用 symfony/skeleton,但它的旧版本发布策略和 Laravel 不同:skeleton 本身不绑定具体 Symfony 组件版本,而是靠 composer.json 中的 require 字段控制。所以指定 skeleton 版本,本质是锁定那个时间点生成的 composer.json 结构。
- 安装 Symfony 4.4 最后一个维护版(v4.4.49):
composer create-project symfony/skeleton myapp "v4.4.49"
- 安装 Symfony 3.4(必须用老模板):
composer create-project symfony/framework-standard-edition myapp "3.4.*"
- 若要确保组件版本严格为 4.4.x,创建后立刻执行:
cd myapp && composer require symfony/console:^4.4 symfony/flex:^1.13
(因 Flex 1.14+ 不再支持 4.4) - 运行
create-project时加--no-interaction可跳过交互式配置,但旧版 Flex 可能仍会报错,建议先composer self-update 1.10.22(兼容性最好的旧版 Composer)
常见失败原因:网络、缓存和 Composer 版本三重干扰
即使命令语法全对,也可能卡在 Installing dependencies 或直接报 Could not parse version constraint。这不是版本写错了,而是环境问题。
- 国内用户大概率遇到 packagist.org 域名解析或连接超时,临时切镜像:
composer config -g repo.packagist composer https://packagist.phpcomposer.com
(注意:phpcomposer 已停更,推荐https://mirrors.aliyun.com/composer/) - Composer 缓存了错误的版本元数据,清空:
composer clear-cache
- Composer 2.2+ 默认禁用非 HTTPS 包源,而某些旧版 Laravel/Symfony 模板的
composer.json含http://源,会直接失败。降级到 Composer 1.10 或手动编辑模板里的repositories字段 - 最隐蔽的坑:PHP 版本不匹配。Laravel 5.5 要求 PHP >=7.0,但 5.5.43 是最后一个支持 PHP 7.0 的版本;Symfony 4.4 要求 PHP >=7.1.3 —— 运行前务必确认
php -v










