答案:临时设置用--timeout=秒数,仅作用于当前命令的http请求阶段,不影响脚本执行;需配合镜像源优化才更有效。例如composer install --timeout=600将下载超时延长至10分钟,但若底层curl或php socket超时更短,仍会失败。

临时设置 Composer 的 timeout 参数
Composer 默认的网络请求超时是 300 秒(5 分钟),遇到慢源或网络不稳定时容易报 Connection timed out 或卡在 Updating dependencies。不需要改全局配置,直接在命令末尾加 --timeout 就能覆盖当前执行的超时值。
比如拉包卡住,想延长到 10 分钟:
composer install --timeout=600
或者更新依赖时临时设为 20 分钟(1200 秒):
composer update --timeout=1200
-
--timeout只影响当前命令的 HTTP 请求阶段(如访问 packagist.org、下载 zip/tar 包),不影响脚本执行或 autoloader 生成 - 值必须是整数,单位为秒;设成
0表示禁用超时(不推荐,可能无限挂起) - 该参数对
composer create-project同样有效 - 注意:它不会覆盖
process-timeout(那个控制的是 post-install-cmd 等脚本的执行时限)
为什么有时加了 --timeout 还报超时?
常见原因是 Composer 实际触发了两个不同层级的超时:一个是 HTTP 下载层(--timeout 控制),另一个是底层 cURL 或 PHP 的 stream context 超时。如果网络中间有代理、NAT 或防火墙主动断连,可能在 --timeout 到期前就被切断。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
这时可以组合使用:
composer install --timeout=600 -vvv 2>&1 | grep -i "timeout\|curl"
观察日志里具体是哪一步失败。如果看到类似 cURL error 28: Operation timed out after 300000 milliseconds,说明 cURL 层已生效;但若出现 PHP Warning: file_get_contents(): SSL: Connection reset by peer,问题更可能出在 TLS 握手或中间设备上,单纯调大 --timeout 无用。
- 国内用户建议优先换镜像源(如阿里云、腾讯云),比硬扛超时更可靠
-
--timeout对composer require中的包搜索(https://packagist.org/search/?q=xxx)也生效 - 某些共享主机限制了 PHP 的
default_socket_timeout,此时--timeout会被底层截断,需联系运维调整
和 config timeout 的区别在哪
composer config --global process-timeout 0 改的是 process-timeout,它只管脚本执行(比如 php artisan optimize),和网络下载完全无关。而 --timeout 是专为 HTTP 请求设计的开关,两者互不干扰。
真正影响下载的全局配置项是 github-protocols 和 secure-http,它们不叫 timeout,但错误配置会导致连接反复重试、间接延长总耗时。例如关掉 secure-http 后 Composer 可能降级走 HTTP,被运营商劫持导致超时假象。
- 查当前生效的 timeout 值:运行
composer config --list | grep timeout,注意区分timeout(不存在,不是合法 config key)和process-timeout -
composer diagnose会检查网络连通性,但它不验证--timeout是否被正确传递,仅测试基础 HTTP 可达性 - CI 环境中建议显式写死
--timeout=600,避免因默认值变更导致构建偶然失败










