必须配置国内镜像且参数严格正确:repo.packagist不能拼错,url须以/结尾,需匹配执行用户,验证须看composer show -v真实请求地址而非config输出,项目级repositories会无条件覆盖全局配置。

国内直接用 composer install 基本跑不通——不是慢,是卡在 Loading composer repositories 超 5 分钟后静默失败。必须配镜像,且必须配对,否则和没配一样。
composer config -g repo.packagist 命令为什么总不生效
这条命令写错一个字符就白忙活,而且不报错,只默默失效。
-
repo.packagist不能写成repos.packagist(多一个 s)、packagist.org或repository.packagist - 第二个参数
composer是type字段值,不能省;写成composer config -g repo.packagist https://mirrors.aliyun.com/composer/就无效 - URL 必须以
/结尾:https://mirrors.aliyun.com/composer/✅,https://mirrors.aliyun.com/composer❌(Composer 2.2+ 会 404 或 fallback) - 执行用户 ≠ 运行用户:你在终端用
root配了,但宝塔、CI 或 Docker 里是www或runner用户运行,它读不到你的配置
验证镜像是否真生效的两种可靠方式
别只信 composer config -g repo.packagist 的输出,它可能显示正确,但实际请求仍走官方源。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 执行
composer show -v | head -n 5,看日志里真实发起的Downloading https://...地址。出现packagist.org→ 没生效;出现aliyun.com或tencent.com→ 正常 - 运行
composer diagnose,它会模拟一次完整请求流程,比--version更早暴露 TLS 握手失败、DNS 解析异常等底层问题
全局配置 vs 项目级配置:什么时候该用哪个
全局配置最省事,但上线环境里它往往最不可靠。
- 本地开发:用
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/即可 - 团队协作 / CI/CD:改项目根目录下的
composer.json,运行composer config repo.packagist composer https://mirrors.aliyun.com/composer/(不加-g),它会安全追加到"repositories"数组,提交 Git 后所有人行为一致 - 宝塔或 Docker 构建:避免依赖全局配置,改用环境变量
COMPOSER_REPO_PACKAGIST=https://mirrors.aliyun.com/composer/注入 - 注意:项目级
repositories字段会无条件覆盖全局设置,哪怕你全局配了阿里云,只要composer.json里有"repositories",它就接管
换完镜像还是卡在 Resolving dependencies
这和镜像无关,是依赖求解器在爆炸。
-
Resolving dependencies阶段不走镜像,只做本地约束计算。卡住说明版本范围太宽,比如"php": "^7.4 || ^8.0"或"monolog/monolog": "*" - 删掉不必要的
require-dev包,尤其phpstan、infection这类重型工具 - 检查是否残留已废弃的
fxp/composer-asset-plugin(老 Yii2 项目常见),它会额外请求 Bower/NPM 源,而这些源没国内镜像 - 清缓存:
composer clear-cache;删vendor/和composer.lock再重装
真正容易被忽略的是:镜像地址写对了、-g 加对了、用户也对上了,但 composer.json 里已有 "repositories" 字段——它会直接屏蔽全局配置,连提示都没有。










