答案是配置未生效且timeout参数未同步调高:必须用composer config -g repo.packagist(单数)配镜像,url末尾带/,末尾加composer类型;同时设http.timeout=600和process-timeout=1200,并手动清理~/.composer/cache/repo/下对应元数据缓存。

镜像源同步超时不是因为“包太大”,而是 Composer 在下载 packages.json(体积已超 10MB)时,http.timeout 默认 60 秒根本不够用——它卡在首字节响应或流式下载中途断连,不是下载完才超时。
为什么配了阿里云/清华镜像 still 超时?
根本原因常是配置没生效,而非网络差:
-
repo.packagist写成repos.packagist(多一个 s)→ 静默忽略,继续连https://packagist.org - URL 少了末尾
/→ 请求变成https://mirrors.aliyun.com/composerpackages.json,直接 404 - 命令漏掉
composer类型标识 → fallback 到官方源,composer diagnose会报Repo is not configured properly - 没同步调高
http.timeout和process-timeout→ 二者控制不同阶段,只改一个等于白改
必须同步设置的两个 timeout 参数
http.timeout 和 process-timeout 不是可选项,是硬性配套动作:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
http.timeout控 DNS + TLS 握手 + 首字节等待 + body 下载全过程,默认 60 秒太短;设为600(10 分钟)才能扛住国内镜像首字节延迟波动:composer config -g http.timeout 600 -
process-timeout控整个命令生命周期(含解压、生成 autoload、运行 post-install-cmd),默认 300 秒易被大 vendor 卡爆;设为1200(20 分钟)更稳妥:composer config -g process-timeout 1200 - 别碰
http-basic.timeout(v2+ 完全不读);也别信--timeout=600(只限命令总耗时,对 HTTP 下载无效)
清缓存要清对地方,否则白忙活
composer clear-cache 只删 ZIP 包和部分 JSON,对决定“有没有这个包”的 packages.json 和 provider-*.json 几乎无效——它们藏在 ~/.composer/cache/repo/https---mirrors-aliyun-com-composer/ 这类路径下:
- 先确认缓存位置:
composer config --global cache-dir - 再进
repo/子目录找对应镜像路径:ls -d $(composer config --global cache-dir)/repo/https---* - 手动删错目录(比如删了
https---packagist.org却配着阿里云镜像)=配置没变 - 更轻量精准的做法:
composer update --refresh(≥2.5),它只丢弃元数据缓存,保留 ZIP 包
CI/CD 或 Docker 构建中镜像失效的真相
容器每次启动都是干净环境,COMPOSER_HOME 未固化会导致全局配置丢失:
- 必须在构建脚本开头显式执行:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/和composer config -g http.timeout 600 - 更稳做法:放弃全局配置,在项目根目录运行
composer config repo.packagist composer https://mirrors.aliyun.com/composer/(不带-g),它会安全合并进composer.json的repositories字段,Git 可追踪,CI 可复现 - 若项目已有私有仓库配置,别手动编辑
composer.json的repositories—— 它会完全覆盖全局repo.packagist,且不提示
最易被忽略的点:镜像只加速 dist 包下载,不介入 Git 克隆、TLS 握手或 DNS 解析。如果 prefer-source: true 开启,Composer 会直连 github.com,此时所有镜像和 http.timeout 都无效——得关掉它或改用 "prefer-dist": true。










