应使用--repository-url参数临时指定镜像或手动修正composer.json中repositories为含"packagist"键的对象格式;正确写法是{"repositories": {"packagist": {"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}, "packagist.org": false}},并删除vendor/和composer.lock后执行composer install。

create-project 卡在 “Loading composer repositories” 怎么办
这不是网络问题,是脚手架模板自带的 composer.json 里已禁用官方源但没配替代镜像,导致 Composer 根本拉不到包列表。常见于 Laravel、Symfony 等官方模板,它们默认写 {"packagist.org": false} 却没填镜像地址。
- 临时救急:直接加
--repository-url参数,例如composer create-project laravel/laravel myapp --repository-url=https://mirrors.aliyun.com/composer/ - 别依赖全局镜像——项目级
repositories字段会彻底屏蔽它,哪怕你config -g配得再对也没用 - 初始化后立刻检查生成的
composer.json,确认repositories是对象({})而非数组([]),否则后续composer config repo.packagist会失败
项目级 repositories 字段怎么写才生效
必须是顶层 repositories 对象,且 "packagist" 键必须显式存在、值为完整镜像配置;同时 "packagist.org": false 要作为同级独立项,不能嵌套。
- 正确格式:
"repositories": {"packagist": {"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}, "packagist.org": false} - 错误示例:
"repositories": [{"type": "composer", "url": ""}](数组格式,不识别packagist键) - 错误示例:
"repositories": {"packagist.org": false}(缺镜像源,结果就是“啥都装不了”) - 改完必须删掉
vendor/和composer.lock,再跑composer install——update会复用旧lock文件里的dist URL,照样 404
为什么 composer config repo.packagist 报错或没反应
命令本身只对 repositories 是对象({})时有效;如果当前 composer.json 里是空数组([])或根本没这个字段,它会静默失败或写入无效位置。
- 先手动编辑
composer.json,把"repositories": []改成"repositories": {} - 再运行
composer config repo.packagist composer https://mirrors.aliyun.com/composer/(注意没-g) - 验证:执行
composer config repo.packagist,输出应为完整 JSON,不是null或空行 - 如果仍报
Key does not exist,说明键名写错了——必须是repo.packagist(单数repo,不是repos)
CI/CD 或宝塔环境下镜像总失效
因为 config -g 只对当前用户生效,而 CI 或宝塔实际运行用户(如 www、runner)很可能不是你配置时的用户。
- GitHub Actions、GitLab CI 等环境更可靠的做法是在每次
composer install前显式指定源:composer install --repository-url=https://mirrors.cloud.tencent.com/composer/ - 或者在项目根目录写
composer.json片段(仅对当前项目生效,适合多团队协作) - 不要在 CI 脚本里用
sudo composer config -g,那会写进root配置,而 runner 容器里是普通用户 - 某些脚手架模板会在
create-project阶段就硬编码禁用源,此时--repository-url是唯一能绕过的办法
repositories 的数据结构类型(必须是对象)、packagist.org 的开关与镜像源必须共存、以及旧 vendor 和 lock 文件的清理动作——这三步缺一不可,否则所有配置都只是纸面生效。php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











