composer install超时需分别设置process-timeout(控制脚本执行、解压等,默认300秒,推荐设600)和http.timeout(控制http请求,默认5秒,推荐设600),二者独立生效,缺一不可;临时可用--timeout=600或环境变量composer_process_timeout=600。

Composer install 超时卡在 downloading 或 Updating dependencies
默认情况下,composer install 或 composer update 在下载包或执行脚本(如 post-install-cmd)时,会受 PHP 的 max_execution_time 和 Composer 自身的网络超时双重限制。常见现象是卡在 Downloading https://packagist.org/packages.json 或某条 php artisan optimize 脚本上,几秒后报错:PHP Fatal error: Maximum execution time of 30 seconds exceeded。
关键点在于:这不是单纯 PHP 配置问题——Composer 脚本执行(scripts)走的是独立子进程,不受 php.ini 中 max_execution_time 控制,而取决于 COMPOSER_PROCESS_TIMEOUT 环境变量或 config.process-timeout 配置项。
设置全局 process-timeout 参数(推荐方式)
用 composer config 命令修改全局配置,影响所有项目(除非被项目级 composer.json 覆盖):
composer config -g process-timeout 600
这会把全局超时设为 600 秒(10 分钟)。值设为 0 表示禁用超时(不建议生产环境使用)。
- 该配置写入
~/.composer/config.json(Linux/macOS)或%APPDATA%\Composer\config.json(Windows) - 如果已存在项目级
"config": {"process-timeout": ...},优先级高于全局配置 - 注意:这个参数只控制 Composer 执行脚本(scripts)和某些内部命令的超时,不控制 HTTP 下载本身(那是
http.timeout管的)
同时调大 http.timeout 防止 packagist 连接失败
下载包元数据或 ZIP 时可能因网络慢触发 HTTP 超时,错误类似:file_get_contents(): php_network_getaddresses: getaddrinfo failed 或直接 Connection timed out。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(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 60
http.timeout 单位是秒,默认是 5 秒,对国内网络或代理环境明显不够。
-
http.timeout控制单次 HTTP 请求(如 GET /packages.json)的等待上限 -
process-timeout控制脚本执行、解压、生成 autoload 等耗时操作 - 两个都设,才能覆盖完整链路:请求 → 下载 → 解压 → 执行 scripts
临时绕过:命令行传参比改配置更快
不想动全局配置?每次运行时加参数也行,尤其适合 CI/CD 或一次性调试:
composer install --timeout=600 --no-interaction
注意:--timeout 是 install/update 命令的内置选项,等价于临时设置 process-timeout,但**不支持**用于 composer run-script。
- 如果脚本本身卡住(比如 Laravel 的
php artisan config:clear),必须靠process-timeout或环境变量COMPOSER_PROCESS_TIMEOUT=600 - Windows 下设置环境变量:
set COMPOSER_PROCESS_TIMEOUT=600 && composer install - Linux/macOS:
COMPOSER_PROCESS_TIMEOUT=600 composer install
真正容易忽略的是:process-timeout 对 composer dump-autoload 或 run-script 有效,但对 require 新包时的下载阶段无效——那得看 http.timeout 和 DNS 解析是否正常。










