composer update不支持缓存路径参数,必须通过composer config --global cache-dir /abs/path(绝对路径)或composer_cache_dir环境变量配置;手动改json或含~会静默失效,需用composer diag验证真实缓存路径。

Composer update 本身不接受缓存路径参数,它完全依赖全局或环境级缓存配置;直接在 composer update 命令里加路径选项无效。
cache-dir 必须用 composer config --global cache-dir 设置
手动改 ~/.composer/config.json 或写 COMPOSER_CACHE_DIR 环境变量风险极高:JSON 格式错一个逗号、路径含波浪号 ~,Composer 就静默跳过整个配置,composer update 仍走默认路径。
- 必须用命令写入:
composer config --global cache-dir /home/alex/composer-cache(路径必须是绝对路径) - 目录需提前创建:
mkdir -p /home/alex/composer-cache - 当前用户必须有读写权限:
chown -R $USER:$USER /home/alex/composer-cache - 改完后旧缓存不会自动迁移,要手动
rsync -a ~/.composer/cache/ /home/alex/composer-cache/或清空重下
环境变量 COMPOSER_CACHE_DIR 可临时覆盖,但条件苛刻
它优先级高于全局 cache-dir,但只在当前 shell 进程生效,适合 CI/Docker 单次构建。问题在于极易静默失败:
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
- 路径必须绝对:
export COMPOSER_CACHE_DIR="/tmp/composer-cache"(不能带~) - 必须先
mkdir -p /tmp/composer-cache,否则 Composer 静默 fallback 到默认路径 - Docker 中若挂载目录属普通用户,但容器以 root 启动,会因权限不足写失败,同样静默回退
验证是否真生效,别信 composer config 输出
composer config --global cache-dir 只显示配置值,不代表 composer update 实际用了它。真正起作用的是 composer diag 输出的 Cache directory: 行:
- 运行
composer diag,看Cache directory:后面的路径是否是你设的 - 再执行
ls -lh $(composer diag | grep "Cache directory" | cut -d' ' -f3),确认该目录下有新生成的files/、repo/子目录和文件 - 如果
composer update --dry-run -v显示Downloading https://packagist.org/packages.json,说明元数据确实从远程拉了——意味着缓存路径已生效且 repo 目录为空;如果还显示Reading /path/to/cache/packages.json,说明第二步没清干净或路径未生效
最常被忽略的一点:即使缓存路径设对了,composer update 依然可能不装新版包——因为 composer.lock 锁死了版本,vendor/composer/installed.json 和 ~/.composer/cache/repo/https---packagist.org/ 里的元数据也可能是旧的。路径只是前提,不是万能解药。










