最稳方式是设COMPOSER_CACHE_DIR环境变量,因其优先级最高、不改配置、全局立即生效且不影响认证;而composer config --global cache-dir易被该环境变量覆盖。

改缓存目录最稳的方式是设 COMPOSER_CACHE_DIR 环境变量,它优先级最高、不改配置文件、所有命令立即生效,且不会干扰 COMPOSER_HOME 下的认证或插件配置。
为什么不能只靠 composer config --global cache-dir
这条命令确实会写进 ~/.composer/config.json,但实际生效受优先级压制:只要环境变量 COMPOSER_CACHE_DIR 存在,它的值就完全覆盖 config 里的 cache-dir。旧版 Composer(./cache),Composer 会把它解析成相对于当前执行目录,一换路径就失效。
- 想用 config 方式,必须确保没设
COMPOSER_CACHE_DIR,且路径是绝对路径(如/data/composer-cache) - 删配置用
composer config --global --unset cache-dir,别手动编辑 JSON 引发格式错误 - 查当前真实生效路径,别只信
composer config --global cache-dir输出,要跑composer global show -v看 Cache directory 那行
COMPOSER_CACHE_DIR 设置后仍不生效?先查这三件事
环境变量设了但缓存还是写进默认位置,大概率是权限、路径或冲突问题。Composer 写失败时不会报错,只会静默回退到默认缓存目录,非常隐蔽。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
- 目标目录必须存在,且当前用户有读写权限(Linux/macOS 用
ls -ld /your/cache/path检;Windows 右键属性看“安全”页) - 路径里不能含空格或中文(尤其 Windows 上设环境变量时加了引号,
COMPOSER_CACHE_DIR不支持引号解析) - Docker 场景下,挂载宿主机目录时注意 UID/GID 匹配,否则写入失败也不提示,直接退化为无缓存模式
项目级缓存路径怎么单独设
极少需要,但 CI/CD 或多团队协作中可能要求每个项目隔离缓存。这时不能用全局 config 或环境变量,得在项目根目录的 composer.json 里加配置:
"config": {
"cache-dir": "./.composer-cache"
}
注意:该配置只对当前项目生效,且必须是相对路径(不能以 / 开头),执行 composer install 前需确保目录已创建并可写。它会被 COMPOSER_CACHE_DIR 和全局 config 覆盖,所以仅当明确需要项目隔离时才用。
真正容易被忽略的是缓存和 vendor 的关系——改了缓存目录,不影响 vendor 位置;但很多人误删 vendor 就以为清了缓存,其实 ~/.composer/cache 或你设的新路径里 zip 包还在,下次安装照样走缓存。验证是否真用了新缓存,装完后直接去那个目录看有没有 archived/ 和 repo/ 子目录生成。

















