必须禁用缓存并清理旧包文件,否则 composer 仍会解压 ~/.composer/cache/files/ 里的旧 zip;正确做法是先定位损坏包手动删除对应 zip,再同步清理 vendor/ 和 composer.lock,最后执行 composer install --no-cache --force-checksums 重装。

必须禁用缓存并清理旧包文件,否则 Composer 仍会解压 ~/.composer/cache/files/ 里的旧 zip —— 你以为在重拉,其实只是在解上周的压缩包。
用 --no-cache 禁用缓存,但不等于“强制重下载”
执行 composer install --no-cache 或 composer update --no-cache 会让 Composer 跳过本地缓存目录,直接向远程源发起请求。但它依然会复用 vendor/ 中已有的包目录,不会主动删除或覆盖。
- 只对“新包”或“缺失包”走网络;已有包仍保留原样
- 若 vendor/ 下某个包的文件被手动修改过,
--no-cache不会还原它 - 常见于 CI 构建后 autoload 失效、二进制文件权限错乱等场景,此时需配合
--force-reinstall
composer install --force-reinstall 才真正逐个重装
这个命令会遍历 composer.lock 里每个包,先删除对应 vendor/ 子目录,再重新下载、解压、写入,并重跑 post-install-cmd(如生成 autoload.php、创建 bin 符号链接)。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 不删
vendor/根目录,也不动composer.lock,适合修复软链接断裂、autoload 权限异常 - Windows 下易因 PhpStorm/Xdebug 占用文件失败,建议关掉 IDE 再执行
- 加
--with-all-dependencies可确保间接依赖(如被其他包 require 的子包)也被重装 - PHP 7.4+ 的 Composer 2.x 支持;Composer 1.x 会报错
Unrecognized option: --force-reinstall
彻底跳过缓存 + 强制刷新:删缓存 + 删 lock + --no-cache
想让每个包都从远程真实拉取、校验哈希、解压安装,必须切断三个来源:已安装产物、锁定依据、本地缓存。漏掉任意一层,都可能复用旧文件。
- 运行
composer clear-cache清掉~/.composer/cache/files/下所有 zip - 删掉项目根目录的
composer.lock(否则 install 仍是“复原”,不是“重算”) - 执行
composer install --no-cache—— 此时 Composer 会按composer.json重新解析依赖树,并全部走网络下载 - 若还卡在
Downloading (0%),大概率是镜像没生效,检查composer config -g repo.packagist输出是否为带type和尾斜杠的 HTTPS URL
只想重拉某一个包?别用 update,用 remove + require
composer update vendor/package-name 看似精准,但它会更新该包及其所有子依赖的版本,可能连带升级其他包,CI/CD 中极易引发不可复现的构建差异。
- 正确做法:
composer remove vendor/package-name→composer require vendor/package-name:^x.y.z - 显式指定版本可避免意外升级;如果是 dev 包,加
--dev参数 - 如果怀疑是缓存 zip 损坏导致重拉失败,先查缓存路径:
composer config cache-dir,再进find $(composer config cache-dir) -name "*vendor-package-name*"删除匹配的 .zip
最容易被忽略的是缓存干扰:你改了 composer.json、清了 vendor、跑了 --no-cache,结果日志里还是没看到 Downloading,或者文件时间戳没变——十有八九是 ~/.composer/cache/files/ 里那个 zip 还在,Composer 直接解压它了。










