必须配国内镜像,因packagist.org在国内dns解析慢、tls握手失败、cdn缺失导致元数据拉取超时;composer config -g repo.packagist失效主因是缺-g、键名错(如repos.packagist)、url末尾无/,三者任一出错即静默回退官方源。

不配国内镜像,composer install 卡在 Loading composer repositories 是常态,不是你网络差,是 packagist.org 在国内根本连不上——DNS 解析慢、TLS 握手失败、CDN 缺失,三者叠加导致元数据拉取超时或静默挂起。必须配,而且得配对。
composer config -g repo.packagist 命令为什么总不生效
它不报错,但也不起作用,90% 是因为三个硬性条件漏掉一个:
-
-g缺失 → 只改当前项目composer.json,换目录就失效 - 键名写成
repos.packagist(多一个s)或packagist.org→ 静默写入无效字段,composer config -g repo.packagist查出来为空 - URL 少了末尾
/→ 拼出https://mirrors.aliyun.com/composerpackages.json,404
验证是否真生效,别只看命令输出:
composer config -g repo.packagist
正确返回应为:
{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}
如果返回空、null 或报错,说明没写对;如果返回的是 https://packagist.org,说明根本没覆盖成功。
哪些镜像地址现在还能用(2026 年 7 月实测)
截至今天,以下三个镜像全量同步、HTTPS 强制、延迟稳定(5 分钟内),其余旧地址基本不可靠:
- 阿里云:
https://mirrors.aliyun.com/composer/ - 腾讯云:
https://mirrors.cloud.tencent.com/composer/ - 华为云:
https://mirrors.huaweicloud.com/repository/php/
绝对不要用:
-
https://packagist.phpcomposer.com(2023 年已下线) -
https://packagist.laravel-china.org(2026 年起同步不稳定,常卡住) - 任何
http://开头的地址(Composer 2.5+ 强制 HTTPS,会直接拒绝)
命令示例(任选其一):
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
项目级配置比全局更可靠,尤其在 CI/CD 和团队协作中
全局配置写在 ~/.composer/config.json,但 CI 流水线跑的是 runner 用户,宝塔部署走的是 www 用户,本地配了 root 的,别人拉代码照样卡住。
进项目根目录,运行:
composer config repo.packagist composer https://mirrors.aliyun.com/composer/
它会自动在 composer.json 顶层安全追加 "repositories" 字段,且不会覆盖已有私有源——前提是原 repositories 是对象({}),不是数组([])。如果是数组,先手动改成对象再执行命令。
改完后必须运行:
composer update --lock
否则 composer.lock 里仍记录旧源地址,安装时会校验失败或 fallback 到官方源。
配完还是卡在 Resolving dependencies?和镜像无关
镜像只加速元数据下载和 ZIP 包分发,不解决依赖解析慢的问题。如果你发现 composer update 卡在 Resolving dependencies 超过 30 秒,大概率是这些原因:
-
composer.json里"php"版本约束太宽,比如"^7.4 || ^8.0 || ^8.1",Composer 会穷举所有组合 - 大量使用未锁定分支,如
"monolog/monolog": "dev-main" -
require-dev里塞了十几个调试工具,且彼此版本约束冲突
这时换镜像毫无意义,得精简 composer.json 或加 --with-dependencies 逐步排查。镜像生效与否,只影响 Loading composer repositories 这一步。










