应优先调 http-timeout 解决弱网下载失败,因其控制 composer http 请求超时;同时需检查 php default_socket_timeout 和镜像源配置,二者失效会导致 http-timeout 静默无效。

直接调 http-timeout,别碰 http-basic 或 github-oauth —— 它们对超时完全没用。
卡在 Downloading https://?该调 http-timeout
这是弱网下最典型的症状:报 Could not fetch https://repo.packagist.org/packages.json、curl error 28、或反复 retry 后失败。根本不是 Composer 慢,而是它默认只等 300 秒,而你的网络可能 DNS 解析慢、TLS 握手卡顿、中间代理抖动——这些都会让单次 HTTP 请求耗时远超预期。
-
http-timeout控制的是 Composer 自己发起的 HTTP 请求(拉取packages.json、下载 ZIP 包)最大等待秒数,和git clone、解压、脚本执行完全无关 - 项目级设置最稳妥:
composer config http-timeout 600,会写入当前composer.json的"config"段 - 全局设置影响所有项目:
composer config --global http-timeout 600,写入~/.composer/config.json - 临时覆盖优先级最高:
COMPOSER_HTTP_TIMEOUT=1200 composer install
process-timeout 和 http-timeout 是两回事
如果你看到的是 [RuntimeException] The process timed out.,或卡在 Installing dependencies 不动、CPU/磁盘几乎没压力,那一定是 process-timeout 在起作用——它只管子进程(如 git clone、unzip、php artisan optimize)跑了多久,和网络下载无关。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
process-timeout默认 300 秒,只影响本地命令执行时长,不影响任何 HTTP 行为 - 项目级推荐:
composer config process-timeout 1800(30 分钟),写入当前composer.json,安全且可提交 - 全局配置已废弃:
composer config --global process-timeout在新版中无效,别信老教程 - 真正有效的全局方式是环境变量:
export COMPOSER_PROCESS_TIMEOUT=1800(Linux/macOS),Windows 下设系统变量
PHP 底层 default_socket_timeout 也会中断连接
就算你把 http-timeout 设到 1200,如果 PHP CLI 模式下的 default_socket_timeout 还是默认 60 秒,cURL 或 stream 层照样会在 60 秒时断开——这个值不走 Composer 配置,得单独查和调。
- 先确认当前值:
php -i | grep default_socket_timeout,常见值是 60,不够用 - 临时绕过(调试/CI 推荐):
php -d default_socket_timeout=1200 $(which composer) install - 不建议永久改
php.ini,因为会影响其他 CLI 脚本;环境变量或命令行参数更可控 - 若用了私有源,还得检查 Nginx 的
proxy_read_timeout是否卡住后端
换镜像源比调超时更有效
调高 http-timeout 不等于解决慢,只是避免误判失败。国内用户更应优先切换镜像源,否则再高的超时也只是“耐心等失败”。
- 阿里云正确地址是
https://mirrors.aliyun.com/composer(末尾不能有斜杠),配错会返回 404 - 验证是否生效:
composer config -g repo.packagist输出应明确含国内域名;再用curl -I https://mirrors.aliyun.com/composer/packages.json看是否秒回 200 - 想实现“阿里云 + 官方兜底”,必须在项目
composer.json的repositories数组中声明,并加"packagist.org": false根节点配置
最容易被忽略的是:PHP CLI 的 default_socket_timeout 和镜像源配置错误这两层,它们会让所有 http-timeout 设置静默失效。先验证镜像是否真在用,再查底层 socket 限制,最后才调 Composer 参数。










