直接换阿里云镜像源并清缓存可解决90%连接超时问题,但命令格式(字段名、type参数、url结尾斜杠及https)、缓存清理(composer clear-cache及手动删目录)和项目级repositories覆盖三者任一出错均导致静默回退至官方源。

直接换阿里云镜像源并清缓存,90% 的连接超时问题当场解决;但命令写错、URL 少斜杠、缓存没清这三处,任一出错都会静默 fallback 到官方源,你根本看不出失败。
composer config -g repo.packagist 命令必须严格按格式执行
这不是“换个地址就行”的操作,字段名、type 参数、URL 格式三者缺一不可:
-
repo.packagist是单数,不能写成repos.packagist(多一个 s 就被 Composer 2.x 忽略,不报错也不生效) - 命令末尾必须带
composer类型标识:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/—— 漏掉composer,配置会被跳过 - URL 必须以
/结尾:https://mirrors.aliyun.com/composer/✅,https://mirrors.aliyun.com/composer❌(否则请求路径拼成/composer/packages.json,返回 404) - 必须用 HTTPS:Composer 2.9.6+ 默认拦截 HTTP 源,
http://mirrors.aliyun.com/composer/会直接拒绝连接
换源后仍卡在 packagist.org?先清缓存再验证
旧缓存里存的是官方源的元数据和 hash,不清理,Composer 会继续尝试连 packagist.org,哪怕你配置已写入。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 执行
composer clear-cache清掉所有缓存 - 删掉本地仓库缓存目录:
rm -rf ~/.composer/cache/repo/https---packagist.org/(Linux/macOS)或%APPDATA%\Composer\Cache\repo\https---packagist.org\(Windows) - 验证是否真走镜像:
composer install -vvv,日志中必须出现Reading packages.json from cache at /https---mirrors-aliyun-com-composer/或类似路径,而不是GET https://packagist.org/packages.json - 别只看
composer config -g repo.packagist输出——它可能显示 URL,但若没"type": "composer"字段,仍是无效配置
项目级 repositories 会彻底屏蔽全局镜像
如果你的 composer.json 里有 "repositories" 字段(哪怕空数组或只含 {"packagist": false}),Composer 就完全忽略全局 repo.packagist 配置。
- 检查项目根目录下
composer.json是否存在"repositories"键;存在即覆盖,且不提示 - 临时方案:进项目目录,运行
composer config repo.packagist composer https://mirrors.aliyun.com/composer/(去掉-g),它会把镜像写入项目级repositories对象中,key 固定为"packagist" - 注意:
"repositories"若是数组[],该命令会失败;需先手动改为对象{}再执行 - CI/CD 环境尤其要注意:容器每次启动都是干净用户环境,
COMPOSER_HOME未固化时,全局配置无效,必须在构建脚本开头显式执行配置命令
大包下载仍超时?同步调高两个 timeout 参数
镜像解决“慢”,timeout 解决“断”。阿里云/腾讯云镜像首字节响应偶尔延迟高,仅换源不够,必须调参:
-
http.timeout控制整个 HTTP 请求周期(DNS、TLS 握手、body 下载):composer config -g http.timeout 600(单位秒) -
process-timeout控制命令总生命周期(含解压、生成 autoload、执行 post-install-cmd):composer config -g process-timeout 1200 - 别碰
http-basic.timeout—— Composer v2+ 完全不读这个;也别信--timeout=600,它只限制命令总时长,对下载阶段无效 - 如果项目设了
"prefer-source": true,镜像完全失效(镜像只代理 dist 包,不代理 Git 克隆),得改成false或删掉该行
真正卡住的时候,往往不是镜像没切对,而是缓存残留 + 项目级配置覆盖 + timeout 没调,三者叠在一起,日志还只显示 “The process timed out”,不告诉你到底卡在哪一环。










