composer install --timeout=600 有效,必须带等号;该参数仅控制命令整体生命周期(不含HTTP下载和子进程),卡在Downloading需设http.timeout,卡在git clone需用--process-timeout=。

直接用 --timeout= 参数,但必须带等号,且只对当前命令生效
composer install/update 的 --timeout 怎么写才有效
这个参数控制整个命令生命周期(含下载、解压、脚本执行)的最大运行时间,单位秒。它覆盖的是 Composer 的 process-timeout 配置,不是 HTTP 层超时。
- 正确写法:
composer install --timeout=600(带等号,=不能省) - 错误写法:
composer install --timeout 600(空格分隔 → 被静默忽略) - 该参数不写入配置文件,每次都要显式带上,适合 CI/CD 临时调试或救急
- Composer 2.2+ 开始,
--timeout不再影响 HTTP 下载阶段;若卡在Downloading https://,得另调http.timeout
为什么 --timeout= 有时没用
常见原因不是参数写错,而是它根本管不到你卡住的那个环节:
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
- 卡在
Downloading https://...?那是 HTTP 层,得用COMPOSER_HTTP_TIMEOUT=1200或composer config http.timeout 1200 - 报错含
The process "git clone ..." exceeded the timeout?说明是子进程超时,--timeout=不起作用,得用--process-timeout=1800或环境变量COMPOSER_PROCESS_TIMEOUT - PHP CLI 的
default_socket_timeout小于你设的http.timeout?连接会在 Composer 感知前被 PHP 底层掐断,查一下:php -i | grep default_socket_timeout
脚本执行超时不能靠 --timeout=
你在 composer.json 的 scripts 里写的 PHP 命令(比如 php artisan migrate),超时由 PHP 自身控制,和 Composer 的 --timeout 无关。
- 临时解决:
php -d max_execution_time=0 composer install - CI 环境推荐:
php -d max_execution_time=900 composer run-script post-deploy - 注意:如果
max_execution_time被disable_functions禁用,php -d会直接报错,需改 php.ini
真正卡住时,先看错误信息里带不带 Downloading 或 The process——这两个关键词决定了你该调哪个 timeout,而不是盲目加 --timeout=。

















