composer install卡在downloading是http-timeout过低所致,需全局设为600秒并配合process-timeout 1800秒;同时必须换阿里云镜像源(带末尾斜杠)、校准系统时间、清除缓存,否则配置静默失效。

composer install卡在Downloading就是http-timeout太低
看到Downloading https://...就停住,基本是单次 HTTP 请求超时了,不是整体命令超时。默认http-timeout只有 60 秒,而国内镜像首字节延迟或大包传输常超这个值。
-
http-timeout控制每次请求(DNS + TLS 握手 + 首字节等待 + body 下载)的总时间,不是只等响应头 - 全局设为 300~600 最稳妥:运行
composer config -g http-timeout 600 - 项目级临时覆盖:加参数
--http-timeout=300,注意该参数仅 Composer 2.2+ 支持 - 旧版本(如 1.x 或 2.1-)不认
--http-timeout,只能靠--timeout硬扛,但效果差
process-timeout和http-timeout必须一起调
只改其中一个,大概率还是失败。比如依赖解析快、但下载慢,process-timeout没到,http-timeout先炸;反之,下载快但 post-install-cmd 脚本卡住,http-timeout没用,process-timeout才管。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
process-timeout默认 300 秒,影响整个命令生命周期(含解压、脚本执行、autoload 生成) - 推荐组合:
composer config -g process-timeout 1800+composer config -g http-timeout 600 - CI 环境建议用环境变量兜底:
COMPOSER_PROCESS_TIMEOUT=2000,避免容器重启后配置丢失 - 设为 0 表示不限时,但 CI 中不推荐——可能卡死无日志,难排查
换镜像源比调 timeout 更治本
单纯拉长 timeout 是“等得更久”,不是“连得上”。很多卡顿根本不是慢,而是 DNS 解析失败、TLS 握手卡死、或镜像 URL 写错导致静默 fallback 到 packagist.org。
- 确认镜像生效:
composer config -g repo.packagist输出必须是完整 JSON,含"type": "composer"和末尾带/的 HTTPS URL - 阿里云正确写法:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/(少斜杠、漏composertype、键名写成repos.packagist都无效) - 换源后必须
composer clear-cache,否则缓存里还存着旧源的失败记录 - 项目级
repositories字段会完全屏蔽全局配置,检查composer.json是否含该字段
超时背后常混着系统时间或证书问题
报SSL certificate problem: certificate has expired,99% 不是证书真过期,而是本地系统时间偏差太大(快或慢超 2 分钟),导致 OpenSSL 校验失败。
- Linux/macOS:运行
timedatectl status,看System clock synchronized是否为 yes;不是就执行sudo timedatectl set-ntp true并重启systemd-timesyncd - Windows:管理员运行
w32tm /resync,若失败先net start w32time,再指定可靠源w32tm /config /syncfromflags:manual /manualpeerlist:"time.nist.gov pool.ntp.org" - CA 证书过期也会触发类似错误,需更新
cacert.pem并统一设置openssl.cafile和curl.cainfo - 别用
secure-http false或cafile /dev/null绕过——仅限调试,生产环境等于裸奔










