全局镜像配置必须同时满足三个硬性条件:必须加-g参数、键名严格为单数repo.packagist、url须以https://开头且末尾带/;任一缺失即静默回退packagist.org,验证需执行composer config -g repo.packagist并输出完整json。

全局镜像配置必须写对三个硬性条件
配了镜像却还是连 packagist.org,90% 是命令没生效,不是网络慢。Composer 全局配置只认三条铁律:-g 参数不能省、键名必须是 repo.packagist(单数,不是 repos 或 repositories)、URL 必须以 https:// 开头且末尾带 /。
正确命令示例(阿里云镜像):composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
腾讯云内网镜像:composer config -g repo.packagist composer https://mirrors.cloud.tencent.com/composer/
- 漏掉
-g→ 只改当前项目目录下的composer.json,换个项目就失效 - 写成
repos.packagist或packagist.org→ 静默忽略,不报错也不生效 - URL 少了末尾
/→ 触发Invalid repository type或请求p2/路径失败
验证是否真正生效,别信“我以为”
运行 composer config -g repo.packagist,输出必须是完整 JSON,形如:{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}
如果输出为空、报错、或仍是 https://packagist.org,说明没配对。此时再执行 composer install 仍会卡在 Loading composer repositories with package information。
- 用
composer config --list --global | grep repositories查看全局实际加载的仓库 - 用
composer diagnose检查是否提示Repo packagist.org is default—— 提示即代表镜像未接管 - 项目根目录下只要存在
composer.json且含"repositories"字段(哪怕值是{}或{"packagist.org": false}),全局配置就完全被屏蔽
宝塔、Docker、CI 环境下配置容易静默失败
全局配置默认写进 ~/.composer/config.json,但不同执行主体读的是不同用户的家目录:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 你在终端用
sudo composer config -g→ 写入/root/.composer/config.json,而宝塔后台、PHP-FPM 进程通常以www用户运行,根本不会读这个路径 - Docker 构建中多个 job 并发跑
composer config -g,可能互相覆盖/root/.composer/config.json,导致某次构建拉错源 - CI/CD 中推荐用临时参数:比如
composer update --repository-url=https://mirrors.cloud.tencent.com/composer/,它会彻底忽略所有已配置仓库,只连指定地址
想让宝塔网站目录下的 composer install 生效?切到 www 用户再配:sudo -u www composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
Resolving dependencies 卡住 ≠ 镜像问题
镜像只加速包下载,不解决依赖解析慢。如果你看到 Resolving dependencies 卡住十几分钟,基本和网络、镜像无关:
-
composer.lock缺失或未提交 → Composer 被迫重算整个依赖图,尤其在 dev 稳定性开启时更明显 -
"minimum-stability": "dev"在composer.json中启用 → Composer 会逐个试探 dev 分支版本,每个包都可能触发多次 HTTP 请求 - 项目引用了已下线私有仓库 → Composer 逐个超时重试(默认 30 秒/次),一个仓库挂掉就能拖慢整轮解析
- CLI 模式下 PHP 的 OPcache 被禁用 → Composer 自身反复解析和编译,性能断崖式下降
快速定位:加 -vvv 参数运行 composer install -vvv,观察最后卡在哪一行 —— 如果卡在 GET https://.../p2/...,才是镜像或网络问题;如果卡在 Resolving dependencies 后长时间无日志,就是本地解析逻辑阻塞。










