根本原因是三个硬性条件缺一不可:键名必须为repo.packagist(非repos.packagist)、第二个参数必须显式传composer(type值)、url必须https且以/结尾;任一缺失即静默回退官方源,验证需输出完整json或url字符串。

composer config -g repo.packagist 为什么没效果
根本原因不是命令写错了,而是三个硬性条件漏掉任意一个就静默失效:键名必须是 repo.packagist(不是 repos.packagist),第二个参数必须显式传 composer(这是 type 值,不是可选注释),URL 必须以 / 结尾且用 HTTPS。比如 https://mirrors.aliyun.com/composer ❌,https://mirrors.aliyun.com/composer/ ✅。
验证是否真生效:运行 composer config -g repo.packagist,输出必须是完整 URL 字符串或 JSON 对象;如果为空、null、或仍是 https://packagist.org,说明配置根本没写进去。
- 别手动编辑
~/.composer/config.json——格式错一个逗号就会被忽略 - Windows 用户注意路径在
C:\Users\用户名\AppData\Roaming\Composer\config.json,权限不足也会导致写入失败 - CI/宝塔/Docker 中 PHP 进程实际以
www-data或www用户运行,你用自己账号配的全局配置它根本读不到
换镜像后 still downloading from github.com
镜像只代理元数据(包列表、版本信息),不托管 ZIP 包。你看到日志里 Downloading https://codeload.github.com/... 或 api.github.com,说明 composer.lock 里还存着旧的 dist URL,镜像再快也救不了。
必须删掉 composer.lock 和 vendor/,再跑 composer install,才能让新镜像生成带镜像地址的 lock 文件。用 --repository 参数临时指定源对已有 lock 文件完全无效。
-
composer install -vvv 2>&1 | grep "Downloading"是唯一能确认真实下载地址的方式 - 阿里云、腾讯云镜像都不改 dist URL,只有部分私有镜像(如某些企业自建 Satis)才支持重写 ZIP 地址
- 若项目依赖大量 GitHub 私有库,得单独配置
github-oauthtoken,否则卡在 auth 步骤
Resolving dependencies 卡住和镜像无关
只要日志停在 Resolving dependencies 超过 5 秒,CPU 占用飙升,基本可以确定是本地 SAT 求解器在暴力穷举版本组合——全程不发任何网络请求,换镜像毫无作用。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
这时候该盯的是约束宽松度和环境干扰项,不是源地址:
- 检查
composer.json里require版本是否太宽,比如"monolog/monolog": "^1.0 || ^2.0"会让解析树爆炸式增长 - 临时禁用 Xdebug:
php -d xdebug.mode=off $(which composer) install,它会让解析慢 5–10 倍 - 加内存限制:
COMPOSER_MEMORY_LIMIT=-1 composer update,避免因内存不足反复 GC - 用
composer why-not foo/bar:1.2.3定位具体哪个包在阻塞升级路径
CI/容器/Docker 里镜像不生效的排查点
全局配置写在当前用户的 ~/.composer/config.json,但 CI runner、Docker 容器、宝塔 PHP 进程往往以不同用户身份运行,压根读不到你的配置。
最稳妥的做法不是靠 -g,而是在执行时强制指定源:
- GitHub Actions:在
composer install步骤加--repository=https://mirrors.aliyun.com/composer/ - Dockerfile:用
RUN composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/,确保所有用户可见 - 宝塔环境:先切到实际用户,
sudo -u www composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - ECS 内网机器建议用 HTTP 内网地址:
http://mirrors.cloud.aliyuncs.com/composer/,避免 HTTPS 握手开销
并发下载数默认只有 3,带宽利用率极低,composer config -g parallel-downloads 8 才能真正榨干镜像带宽——这点最容易被忽略。










