直接运行composer config --global cache-dir /path/to/cache即可修改,路径须为绝对路径、存在且当前用户有读写权限;改后立即生效,但需在CI/CD中显式缓存该目录并按PHP版本隔离,否则缓存不命中。

直接改 cache-dir 就行,但必须写绝对路径、确保可写、且要配合 CI/CD 缓存策略才真正生效。
怎么用命令改 Composer 缓存路径
运行 composer config --global cache-dir /path/to/cache 即可。比如:composer config --global cache-dir /data/composer-cache。
注意这会写入 ~/.composer/config.json,不是改环境变量或 shell 配置文件。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
- 路径必须存在,且当前用户有读写权限,否则后续
composer install会静默失败(日志里只报file_put_contents(...): failed to open stream) - 别用
~,Composer 不解析波浪号,/home/runner/.composer-cache-8.2才合法 - 改完立刻生效,旧缓存不会自动迁移,要手动搬或删
CI/CD 里为什么改了路径还慢
因为缓存路径只是“写到哪”,而 CI 工具(如 GitHub Actions、GitLab CI)默认不持久化这个目录——每次 job 启动都是全新 $HOME,~/.composer/cache 目录一空,缓存就废了。
- 必须在 CI 脚本里显式挂载或缓存该路径,例如 GitHub Actions 的
actions/cache@v4要指定path: ~/.composer/cache/files - 推荐按 PHP 版本隔离:用
composer config --global cache-dir "$HOME/.composer-cache-$PHP_VERSION",避免 PHP 8.1 和 8.2 共用一份 dist 包导致 autoload 错乱 - GitLab CI 中若用
cache:关键字,必须包含~/.composer/cache/整个目录,不能只写~/.composer/cache/files(否则 repo 元数据不缓存,首次 install 仍要刷新 packagist.org 响应)
缓存路径设在哪才真快
缓存目录位置直接影响解压和校验速度。Composer 从 cache-dir/files/ 读 ZIP 包、从 cache-dir/repo/ 读元数据,这两步都走文件系统 I/O。
- 设在 SSD 或 tmpfs(如
/dev/shm/composer-cache)比 NFS 或 Docker volume 快 3–5 倍 - Linux 上用
mount -t tmpfs -o size=2G tmpfs /data/composer-cache挂载后配置,重启需重挂(加到/etc/fstab) - Docker 场景下,记得把新路径加进
VOLUME或docker run -v挂载,否则容器退出缓存即丢 - 千万别设在
/tmp:某些 CI 环境(如自建 runner)会定期清空,缓存反复失效
缓存路径本身不难改,难的是让 Composer 进程真正读到它、让 CI 工具真正保留它、让不同 PHP 版本互不污染它——漏掉任一环,composer install 就还是从头下载。

















