composer config -g repo.packagist 不生效是因为必须同时满足三个硬性条件:键名严格为单数 repo.packagist、第二个参数必须显式写 composer(type 值)、URL 必须 HTTPS 且末尾带 /,缺一则静默回退官方源。

composer config -g repo.packagist 命令为何总不生效
它根本不会报错,但 composer install 依然卡在 Downloading https://codeload.github.com/——八成是命令写错了。Composer 2.x 对配置极其严格,漏掉任一硬性条件就静默回退到官方源。
-
repo.packagist是唯一合法键名,写成repos.packagist(多一个 s)、packagist或Repo.Packagist都无效 - 中间的
composer是type值,不是可选参数,必须显式写出;漏掉它,Composer 就当没配,直接 fallback 到https://packagist.org - URL 必须以
https://开头,且末尾带/:比如https://mirrors.aliyun.com/composer/✅,而https://mirrors.aliyun.com/composer❌(少斜杠会导致请求路径拼成/composerpackages.json,404) - 验证是否真写进去了:运行
composer config -g repo.packagist,输出必须是完整 JSON(如{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"})或至少是那个带斜杠的 URL 字符串;空、null、或仍是https://packagist.org,说明根本没写成功
换镜像后仍卡在 Downloading,最常被跳过的三步
镜像配置正确 ≠ 立刻加速。缓存里还存着旧源的元数据,Composer 优先读缓存,仍会尝试连 packagist.org 做校验,结果卡在 DNS 或 TLS 握手。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 必须立刻执行
composer clear-cache——清掉所有本地缓存,强制重新拉取镜像站数据 - 如果项目已有
vendor/和composer.lock,建议一并删掉再跑composer install,避免残留干扰(composer.lock里存的是旧dist.url,不删它,换源等于白配) - 验证是否真走镜像:运行
composer show laravel/framework -vvv 2>&1 | grep "Downloading",日志里必须出现mirrors.aliyun.com或对应镜像域名,不能只看命令有没有报错
低速网络下必须启用 http-downloader: curl
Composer 默认用 PHP stream 下载,对弱网、高延迟、频繁重连极不友好。启用 http-downloader 后改用 cURL,支持断点续传、细粒度超时、自动重试和连接复用。
- 必须显式配置:
"http-downloader": "curl",不设则默认回退到 stream - 关键超时值建议:
"process-timeout": 300(整个命令上限)、"http-timeout": 60(单次 HTTP 请求) - 若私有仓库需认证,
http-basic必须配在config块内,而非外部auth.json(否则 cURL 不读取) - 常见报错
Failed to decode response: zlib_decode(): data error,大概率是误启了 cURL 自动解压,此时应确认未手动设置CURLOPT_ENCODING
CI/容器环境里全局配置经常失效的真相
全局配置写在 ~/.composer/config.json,但它只对当前用户生效。宝塔默认用 www 用户执行,GitHub Actions 用 runner,Docker 容器里可能是 www-data——你用自己的账户配了,它根本读不到。
- CI 构建推荐进项目根目录,用不带
-g的命令:composer config repo.packagist composer https://mirrors.aliyun.com/composer/ - Dockerfile 中应确保切换到目标用户后再执行配置,或直接把配置写入
composer.json的config段 - 宝塔等面板环境务必用
sudo -u www composer config -g ...,否则配置写进了 root 的~/.composer,实际运行时完全不生效 - 别信
composer config -g packagist.org false这类禁用操作——它会让私有包解析失效,尤其混用 GitLab 私仓时直接崩

















