必须先配置镜像源,否则 composer create-project 会卡在“loading composer repositories”;原因在于默认 packagist.org 不可达,且无自动 fallback 或提示,需通过全局或项目级 config 显式设置正确 https 镜像 url。

直接结论:项目初始化前必须先配镜像,否则 composer create-project 或 composer install 会卡在 “Loading composer repositories” —— 不是网络差,是默认源根本连不上。
composer create-project 初始化时卡住,怎么破?
这不是命令写错,而是镜像没生效导致元数据拉不下来。新项目初始化本质是先 fetch 全量包索引,再选版本安装,这一步完全依赖镜像源可用性。
- 别等
create-project卡住才想起来配镜像——它失败后不会自动 fallback,也不会提示你该换源 - 执行前先验证全局镜像是否生效:
composer config -g repo.packagist,输出必须是带"type": "composer"和完整 HTTPS URL 的 JSON 对象 - 如果返回空或报错,说明
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/这条命令没写对(常见漏掉-g、多写s成repos.packagist、URL 少末尾斜杠) - 临时救急:直接在初始化命令里加
--repository-url,例如:composer create-project laravel/laravel myapp --repository-url=https://mirrors.aliyun.com/composer/
项目级镜像配置比全局更可靠
尤其当你用 create-project 拉的是别人维护的模板(比如 Laravel、Symfony 官方脚手架),它们的 composer.json 可能已禁用 packagist("packagist.org": false),这时全局镜像会被忽略。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 进项目根目录后,立刻运行:
composer config repo.packagist composer https://mirrors.aliyun.com/composer/(注意:没有-g) - 这条命令会在
composer.json顶层写入"repositories"字段,key 固定为"packagist",不是任意字符串 - 如果已有
"repositories"且是对象结构(不是数组),它会合并;如果是数组,需手动确保{"type":"composer","url":"..."}条目存在 - 改完立刻
composer update --lock,否则旧composer.lock还指向国外源地址,后续install仍可能失败
为什么配了镜像还是慢?和镜像无关的几个硬伤
镜像只加速元数据拉取和 ZIP 包下载,解决不了依赖解析阶段的问题。如果你发现 composer install 卡在 “Resolving dependencies”,基本可以排除镜像问题。
-
php版本约束太宽,比如"php": "^7.4 || ^8.0 || ^8.1 || ^8.2",会让 Composer 尝试数百种组合 -
require-dev里堆了太多工具链:phpunit + phpstan + psalm + phpcpd + friendsofphp/php-cs-fixer 混在一起,彼此版本冲突概率飙升 - 用了已废弃的
fxp/composer-asset-plugin(常见于老 Yii2 项目),它绕过 Composer 镜像机制,直连 Bower/NPM,而这俩源国内根本不可用 - 本地
~/.composer/cache损坏,可尝试composer clear-cache,但注意:清缓存后首次安装会稍慢,因为要重建索引
最容易被忽略的一点:镜像 URL 必须严格匹配格式——https 开头、末尾带 /、repo.packagist 不能多字母也不能少字母。错一个字符就静默失效,且没有任何提示。










