composer安装慢90%因直连packagist.org,必须换国内镜像源;执行composer config -g repo.packagist确认url为https://mirrors.aliyun.com/composer/,再运行composer clear-cache并用composer install -vvv验证日志中是否出现镜像域名。

Composer安装慢,90%是因为还在直连 packagist.org —— 不是你的网络差,是 DNS 解析、TLS 握手、首字节延迟三重卡在境外服务器上。换镜像不是“试试看”,而是必须做的第一步,且必须配对、配全、配准。
确认当前用的是哪个镜像源
直接运行:composer config -g repo.packagist。输出必须是完整 URL,比如 https://mirrors.aliyun.com/composer/。如果显示 null、空值、或仍是 https://packagist.org,说明配置没生效。
- 常见拼错:写成
repos.packagist(多一个s),Composer 会静默忽略 - 旧版 Composer(1.x)不识别
repo.packagist,得用composer config -g repos.packagist '{"type":"composer","url":"..."}' - URL 末尾漏了
/,部分版本会拼接出错,导致 404
全局配置阿里云镜像源(最稳)
执行这条命令即可立即生效,无需重启终端:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
它会写入全局 config.json,所有项目默认走这个源。但要注意:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 必须带上
composer这个type值,不能省略 - 推荐阿里云,同步及时、CDN 覆盖广,比已停更的
packagist.laravel-china.org(2025 年底下线)更可靠 - 设完立刻清缓存:
composer clear-cache,否则旧的元数据还在缓存里,Composer 仍会尝试从旧地址拉取
验证是否真走国内镜像
光看 config 输出不够,要亲眼看到请求发到了镜像域名。加 -vvv 运行:
composer install -vvv 2>&1 | grep "Downloading"
日志里必须出现类似 mirrors.aliyun.com 或 mirrors.tuna.tsinghua.edu.cn 的路径才算真正生效。如果还看到 packagist.org,说明 fallback 了,配置被覆盖或未生效。
- 项目级
composer.json中定义了repositories,会覆盖全局配置;可用composer config --list和composer config --list --global对比确认实际生效的是哪个 - 临时绕过所有自定义源测试:
composer install --no-plugins --repository=https://packagist.org,如果变快,说明本地repositories配置有问题
为什么换了镜像还卡在 Resolving dependencies
这个阶段不走网络,换镜像完全不影响它。卡在这里的真实原因通常是 PHP 环境或依赖结构问题:
-
memory_limit过低(如 128M),依赖图解析失败重试 —— 临时加COMPOSER_MEMORY_LIMIT=-1再试 - Xdebug 启用中,会让解析慢 5–10 倍 —— 用
php -d xdebug.mode=off $(which composer) install临时禁用 -
platform配置与实际 PHP 版本不匹配(如"php": "7.4"却在 PHP 8.5.5 上运行),触发降级查找逻辑 -
composer.lock残留已下线包的引用,删掉vendor/和composer.lock,再跑composer install --no-cache
镜像只解决下载瓶颈,不掩盖解析阶段的底层问题。很多“换源无效”的 case,其实根本没卡在网络,而是卡在 PHP 内存或 Xdebug 上。










