Resolving dependencies卡住是DNS或域名解析失败,非timeout问题;Downloading卡住才需调http.timeout;Executing command或autoload卡住属子进程或文件系统瓶颈,应禁用脚本、插件或调整PHP配置。

Composer部署项目超时,本质是网络连通性、配置粒度或执行阶段不匹配导致的——不是简单“加个timeout就能好”,得先看卡在哪一步,再动对应参数。
Resolving dependencies卡住:DNS或域名访问失败,不是timeout能救的
这一步 Composer 只做域名解析(比如查 mirrors.aliyun.com 的 IP),不发 HTTP 请求,http.timeout 和代理完全无效。
- 运行
dig mirrors.aliyun.com @114.114.114.114,看是否返回有效 IPv4 地址;若超时或无响应,说明本地 DNS 被污染或不可用 - 检查
/etc/hosts(Linux/macOS)或C:\Windows\System32\drivers\etc\hosts(Windows),确认没把mirrors.aliyun.com错误指向127.0.0.1 - 临时换 DNS:Linux/macOS 编辑
/etc/resolv.conf加nameserver 8.8.8.8;Windows 在网络适配器里手动设置 - 用手机热点试一次——很多企业网会屏蔽
packagist.org域名,但热点通常直连通畅
Downloading卡住:该调http.timeout,不是process-timeout
只有到这一步,Composer 才真正发起 HTTP 请求下载 ZIP 包或元数据,此时 http.timeout 才起作用。默认仅 60 秒,对大包(如 laravel/framework)或首字节延迟高的镜像极易触发失败。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 全局设置:运行
composer config -g http.timeout 600(单位秒,600 = 10 分钟) - 项目级更稳妥(尤其 CI):在
composer.json的"config"段加"http.timeout": 600 - 验证镜像源是否真可用:用
curl -I https://mirrors.aliyun.com/composer/packages.json看返回状态码是否为 200 - 注意 URL 必须带末尾斜杠:
https://mirrors.aliyun.com/composer/✅,https://mirrors.aliyun.com/composer❌(少斜杠会拼出非法路径)
Executing command 或 Generating autoload files卡住:不是网络问题,是子进程或文件系统瓶颈
停在 Executing command (CWD: ) 通常是 post-install-cmd 脚本卡死(比如 php artisan key:generate 等待输入);停在 Generating autoload files 后无响应,则多因 vendor 目录结构复杂、symlink 解析慢(常见于 WSL2 或 NTFS 卷),和 timeout 设置无关。
- 加
--no-interaction避免脚本交互阻塞:composer install --no-interaction - 临时跳过脚本和插件测试:
composer install --no-scripts --no-plugins - WSL2 用户可尝试关闭 symlink 支持:
composer config -g use-symlinks false - 检查 PHP CLI 模式下
memory_limit是否足够(建议设为-1或至少512M)
CI/CD 中反复超时:环境变量比命令行参数更可靠
容器每次重启都会丢失命令行配置,而环境变量能穿透插件和自定义 installer 启动的子进程。
- 必须设镜像源:
composer config -g repos.packagist composer https://mirrors.aliyun.com/composer/ - 用环境变量覆盖总耗时:
COMPOSER_PROCESS_TIMEOUT=1200(比--timeout=1200更稳) - 强制用 dist 包:
--prefer-dist,避免git clone卡住 - 清理缓存是必要前置:
composer clear-cache,否则旧失败地址仍会被复用
最常被忽略的是:换源命令漏一个字符、URL 少斜杠、键名写成 repos.packagist(应为 repo.packagist),都会导致配置“看似成功”实则静默失效——务必用 composer config -g repo.packagist 输出完整 JSON 验证。

















