Composer默认process-timeout为300秒,超时会导致下载或解压中断;可全局设为1800秒、项目级配置3600秒,或临时用COMPOSER_PROCESS_TIMEOUT=7200或--timeout=7200覆盖。
Composer 默认的 process-timeout 是 300 秒(5 分钟),遇到大包(如 laravel/framework 带完整 vendor 的 dist 包、或某些含二进制资源的私有包)时,下载或解压卡住超过这个时间就会被强制终止,报错类似:proc_open(): fork failed - Cannot allocate memory 或直接显示 Failed to download ... The process timed out。调高它能解决多数因超时导致的中断,但不能掩盖内存/IO 真实瓶颈。
适用于经常操作大包、CI 环境或本地网络较慢的场景。修改的是 Composer 的全局配置文件,对后续所有 composer install / composer update 生效:
composer config -g process-timeout 1800(单位为秒,这里设为 30 分钟)~/.composer/config.json,确保其中包含:{
"config": {
"process-timeout": 1800
}
}composer.json 中定义了 "config": {"process-timeout": ...},则以项目级为准更推荐的方式,避免污染全局环境,也方便团队统一配置和版本控制:
composer.json 的 config 段中添加:"config": {
"process-timeout": 3600
}composer update --lock 或任意 composer install 后,该配置即生效ext-mongodb 的预编译包),建议设到 3600(1 小时)以上;但不建议无限制设成 0(表示永不超时),因为可能掩盖挂起或死锁问题适合调试或 CI 脚本中按需调整,不改动任何配置文件:
COMPOSER_PROCESS_TIMEOUT=7200 composer install
composer install --timeout=7200(注意是 --timeout,不是 --process-timeout)
高,会覆盖 composer.json 和全局配置;但 --timeout 在较老版本 Composer(composer install --process-timeout=7200 —— 这个参数不存在,会被忽略真正卡住的时候,光调高 process-timeout 只是“拖时间”,还得检查是否同时存在内存不足(fork failed)、磁盘空间不够、或远程仓库响应极慢。建议搭配 composer install -v 查看卡在哪一步,再决定是调 timeout、加 --prefer-dist、还是换镜像源。