卡在resolving dependencies是dns问题,需用dig验证并换dns或改hosts;卡在downloading才调http.timeout并配镜像源;卡在executing command才调process-timeout;设错层级无效。

Linux 下设置 Composer timeout 不能只改一个参数,必须区分清楚卡在哪一层——是 DNS 解析、HTTP 下载,还是子进程执行。设错位置,调再久也没用。
卡在 Resolving dependencies 时别碰 timeout
这一步根本没发 HTTP 请求,http.timeout 和 process-timeout 都无效。它只做域名解析,问题出在 DNS 上。
- 运行
dig mirrors.aliyun.com @8.8.8.8看是否返回 IPv4 地址;超时说明本地 DNS 被污染或不可达 - 临时换 DNS:编辑
/etc/resolv.conf,加一行nameserver 8.8.8.8(需 root 权限) - 检查
/etc/hosts是否误把mirrors.aliyun.com指向了127.0.0.1或其他错误 IP - 用手机热点试一次——很多企业网会拦截 packagist.org 域名,但热点通常直连通畅
卡在 Downloading 时才该调 http.timeout
只有到这步,Composer 才真正发起 HTTPS 请求下载 packages.json 或 ZIP 包,此时 http.timeout 才起作用。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
- 全局设置:
composer config -g http.timeout 600(单位秒,推荐 600 起) - 项目级更稳妥(尤其 CI):在
composer.json的"config"段加"http.timeout": 600 - ⚠️ PHP 的
default_socket_timeout必须 ≥ 你设的值,否则提前掐断:运行php -i | grep default_socket_timeout查,若为 60,得去php.ini改 - 必须同步切国内镜像源:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/(末尾斜杠不能少) - 换源后立刻执行
composer clear-cache,否则旧缓存仍走失败地址
卡在 Executing command 或整体 install/update 超时,要动 process-timeout
报错含 The process timed out 或 [RuntimeException] The process "" exceeded the timeout,说明是 git clone、unzip、post-install-cmd 这类子进程被杀,和 HTTP 完全无关。
- 临时覆盖(推荐调试用):
composer install --timeout=1200(注意是--timeout=,不是--process-timeout=) - 全局生效:
composer config -g process-timeout 1200 - 项目级配置:在
composer.json的"config"段加"process-timeout": 1200 - 环境变量兜底(CI 最可靠):
COMPOSER_PROCESS_TIMEOUT=1200 composer install - 设为 0 表示禁用超时,但不建议长期用——一旦网络卡死或镜像不可用,命令会无限挂起
代理环境下必须同时配 http-proxy 和 https-proxy
只配 http-proxy 一定失败。Packagist、GitHub 全部走 HTTPS,漏掉 https-proxy 就等于让 HTTPS 请求 fallback 到直连,结果就是卡在 Loading composer repositories 或反复报 cURL error 28。
-
https-proxy的值协议头必须是http://,哪怕你的代理监听的是 HTTPS 端口:例如http://127.0.0.1:7890 - 带认证的密码含
@或/必须 URL 编码,比如pa%40ss%2Fword - 验证是否生效:
composer config -g --list | grep -E "(http|https)-proxy",两行都得有且格式合规 - NTLM 代理(如公司域环境)需用
cntlm或px中转,再把两个 proxy 都指向中转地址
最常被忽略的是:光调 timeout 不解决根本问题。DNS 不通、镜像没切、PHP socket 超时太短、内存不足(memory_limit < 1.5G)、甚至 post-install-cmd 里 artisan 命令卡在交互提示,都会表现为“超时”。先定位卡点,再动对应开关。










