答案是镜像配置错误导致卡住,必须严格满足三要素:repo.packagist(无s)、type为composer、url为https且末尾带/;全局配置仅对执行用户生效,项目级配置更可靠,换源不解决依赖解析慢问题。

Composer 报错“Loading composer repositories with package information”卡住,90% 是镜像没配对,不是网络问题。
composer config -g repo.packagist 命令必须写对三要素
这条命令静默失败不报错,但实际没生效——你看到的还是官方源。必须同时满足:
-
repo.packagist不能写成repos.packagist(多一个s就完全无效) - 中间的
composer是type值,不是可选参数,漏掉后 Composer 2.x 会 fallback 到https://packagist.org - URL 必须是 HTTPS 且末尾带
/,例如https://mirrors.aliyun.com/composer/✅,https://mirrors.aliyun.com/composer❌(少斜杠导致 404)
验证是否写入成功:运行 composer config -g repo.packagist,输出应为类似 {"type": "composer", "url": "https://mirrors.aliyun.com/composer/"} 的完整 JSON 对象。如果返回空、null 或报错,说明根本没写进去。
全局配置在宝塔/CI/计划任务里不生效的真正原因
全局配置写在 ~/.composer/config.json,但它只对「执行命令的用户」生效。宝塔后台、CI 构建脚本、Linux 计划任务往往不是你当前登录的用户:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 宝塔「PHP 管理器」或「一键部署」默认以
www用户运行,它读的是/home/www/.composer/config.json,不是你的/root/.composer/config.json - CI 脚本里用
sudo composer config -g,结果写进了root配置,但构建容器里实际用的是runner用户 - 解决方法:先查真实用户(
whoami或看日志 UID),再用对应用户执行配置,例如sudo -u www composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
项目级配置比全局更可靠,但别覆盖已有 repositories
进项目根目录,运行 composer config repo.packagist composer https://mirrors.aliyun.com/composer/(去掉 -g),它会安全写入 composer.json 的 repositories 字段:
- 如果
"repositories": {}是空对象,命令自动 merge 进去 - 如果
"repositories": []是数组格式,命令会直接报错,需先手动改成对象结构 - 别手写
"packagist.org": false—— 这会彻底关掉官方源,镜像临时不可用时composer install直接失败 - 改完记得删掉
vendor和composer.lock再重装,否则旧 lock 文件里的 hash 可能和镜像元数据不匹配
换源后 still stuck at “Resolving dependencies”?和镜像无关
镜像只加速下载,不解决依赖解析慢的问题。如果你发现 composer update 卡在 Resolving dependencies 几十秒甚至几分钟,基本可以确定是本地环境或 composer.json 写法导致的:
-
"php": "^7.4 || ^8.0"这类宽泛版本约束会让 Composer 尝试大量组合 - 大量未锁定的
dev包(如"monolog/monolog": "dev-main") -
require-dev里塞了太多工具链(phpunit、phpstan、psalm混用)
这类问题不会因换镜像改善,得从 PHP 版本约束、包版本锁定、dev 依赖精简入手。










