composer update卡住分两类:http超时需调高http.timeout并配国内镜像;子进程超时则需增大process-timeout。缓存清理须清三处元数据,且必须删除composer.lock才能触发版本更新。

composer update卡在Downloading https://packagist.org/ 是 HTTP 超时
看到输出停在 Downloading https://packagist.org/packages.json 或类似 URL,说明是单次 HTTP 请求超了——http.timeout 在起作用,不是总耗时问题。
默认值仅 60 秒,国内网络或镜像首字节延迟高时极易触发。解决方式很直接:
- 临时调高:
composer update --http-timeout=600 - 全局生效(推荐):
composer config -g http.timeout 600 - 必须同步配国内镜像,否则调再大也白等:
composer config -g repos.packagist.org.url https://mirrors.aliyun.com/composer/
注意:http-basic.timeout 是 v1 废弃项,v2 完全不读,写了也没用。
composer update 卡在 Executing command 是子进程超时
输出末尾出现 Executing command (CWD: /path),后面没动静,大概率是 git clone、unzip 或 post-install 脚本卡死。这时 http.timeout 无效,得动 process-timeout。
- 它控制整个命令生命周期,含解压、脚本执行、autoload 生成等所有步骤
- 默认仅 300 秒,大项目跑 post-update-cmd 很容易超,建议设为
1200 - 命令行临时改:
composer update --process-timeout=1200 - CI 环境更推荐环境变量:
COMPOSER_PROCESS_TIMEOUT=1200,能覆盖插件启动的子进程
Windows 用户注意:PowerShell 中 process-timeout 值若含空格或符号可能被截断,建议用环境变量方式。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
删了缓存还是拉不到新版?metadata 没清干净
composer clear-cache 只清 ~/.composer/cache/files/ 和 vcs/,但真正决定“有哪些新版本”的元数据藏在三处:
-
~/.composer/cache/repo/https---packagist.org/:存着过期的packages.json和provider-*.json -
vendor/composer/installed.json:记录当前已装包的精确版本,影响依赖解析 -
composer.lock:硬编码每个包的版本和哈希,不删它,update就不会动版本
顺序不能错:先 composer clear-cache,再删上面三处,最后 composer update。验证是否真刷新,跑 composer update --dry-run -v,盯输出里有没有 Downloading https://packagist.org/packages.json ——只有这一行出现,才算成功。
最小稳定性设置会屏蔽新版本,这不是缓存问题
即使 metadata 刷干净了,composer show vendor/package --all 还是看不到 v2.1.0-beta,大概率是项目里写了 "minimum-stability": "stable" 或 "prefer-stable": true。
Composer 会主动过滤掉非 stable 版本,跟缓存无关。临时绕过可加参数:composer update vendor/package --stability-flags="vendor/package:dev",但长期应评估是否真需放宽稳定性策略。
最容易被忽略的是 composer.lock:很多人删了 cache 和 installed.json,却留着它,结果 update 依然原地不动——因为 Composer 认为“锁文件没变,就不需要动版本”。










