优先执行composer install --dry-run判断是否可续装;若显示“Skipped”则直接重试install,否则删vendor/autoload.php和vendor/composer/后dump-autoload再install。

直接删 vendor 和 lock 文件不是最稳的做法
很多开发者一看到报错就 rm -rf vendor/ composer.lock,结果反而触发 autoload.php 丢失、class not found 或 Invalid argument supplied for foreach()。Composer 的中间态比想象中“有记忆”——部分包可能已解压、autoload 已生成、但依赖树没走完,清空后它不会自动补全“半截包”,只会从头开始,且可能因残留 autoload 映射而崩溃。
先用 --dry-run 判断是否可续装
运行 composer install --dry-run 是最快判断依据:
- 如果输出大量
Skipped(例如Skipped installation of package foo/bar),说明 Composer 能识别已安装状态,直接再跑一次composer install就能续上 - 如果输出全是
Installing或直接报错(如Class 'X' not found),说明中间态损坏,此时才需要清理
注意:不要只删 vendor/foo/bar 这类子目录——Composer 不认局部删除,只认 composer.lock 的完整快照。
损坏时该清理哪些文件,而不是全部
真正需要清理的最小集合是:
-
vendor/autoload.php(autoload 错误源头) -
vendor/composer/目录(含installed.json,截断会导致解析失败)
保留 vendor/ 下其他已下载的包目录,然后执行:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
composer dump-autoload<br>composer install
这样既能避开重下所有 ZIP,又能重建 autoload 映射,比全删更轻量、更安全。
--retries=5 为什么经常没用
这个参数在 Composer 2.2+ 才生效,且只对 dist 包(ZIP/TAR)下载起作用,对 git clone 完全无效;更重要的是它不控制单次请求超时——默认 http.timeout=60 在高延迟链路上根本不够,常见卡在 Downloading (0%) 其实是 TLS 握手或首字节超时。
真正要调的是:
- 临时:设置
COMPOSER_NETWORK_TIMEOUT=300 - 永久:运行
composer config -g http.timeout 300(注意不是http-timeout)
另外,旧版本(如 2.1.x)会静默忽略 --retries,实际仍是默认 3 次。
最关键的不是重试几次,而是看 vendor/composer/installed.json 是否完整、autoload.php 是否可写、镜像源是否真在用——这些状态比命令参数更能决定重试成败。

















