当前生效的缓存路径以 composer config --global cache-dir 输出为准,非默认路径;需确保目录存在、权限正确、使用绝对路径;环境变量 composer_cache_dir 优先级最高,且缓存命中依赖 php 版本、composer.lock 内容、镜像源三者一致。

确认当前生效的缓存路径,别信默认值
运行 composer config --global cache-dir 输出的才是 Composer 实际写入的位置,不是 ~/.composer/cache 或 %APPDATA%\Composer\Cache。Windows 用户可把输出粘贴到资源管理器地址栏直接打开;Linux/macOS 用 du -sh $(composer config --global cache-dir) 查大小。如果输出为空,说明全局配置未初始化,先执行 composer config -g home 看 COMPOSER_HOME 是否合理。
用 config 命令改路径,别手改 JSON 文件
手动编辑 ~/.composer/config.json(Windows 是 %APPDATA%\Composer\config.json)极易出错:多一个逗号、中文引号、BOM 头或结尾少斜杠,Composer 就会静默跳过整个文件,后续所有命令都走默认路径且不报错。
-
composer config --global cache-dir会自动校验格式、处理转义、写入正确位置,并刷新内部状态 - 必须指定绝对路径:写
/data/composer-cache,别写~/composer-cache或./cache - 目标目录需提前创建,且当前用户有读写权限(Linux/macOS:
mkdir -p /data/composer-cache && chmod 755 /data/composer-cache;Windows:右键目录 → “属性” → “安全” → 确保当前用户有“完全控制”) - 改完后立刻验证:
composer config --global cache-dir必须返回你刚设的完整路径;再跑composer diag,看Cache directory:行是否匹配
环境变量 COMPOSER_CACHE_DIR 优先级最高
如果设置了 COMPOSER_CACHE_DIR,它会完全覆盖 cache-dir 配置。Docker 或 CI 中常因没透传该变量导致缓存失效——比如容器里没设,进程就 fallback 到默认路径。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 临时生效(如 CI 单次构建):
export COMPOSER_CACHE_DIR="/d/ci-cache" && composer install(Bash)或$env:COMPOSER_CACHE_DIR="D:\ci-cache"(PowerShell) - 必须是绝对路径,不能含空格或中文;进程退出即失效
- 验证是否被加载:
php -r "echo getenv('COMPOSER_CACHE_DIR');",输出应为非空字符串 - 旧缓存不会自动迁移,新旧路径内容完全隔离;清旧缓存前先确认新路径已真正命中(
composer clear-cache后看日志清理的是不是新路径)
缓存能复用的前提不是路径对,而是三者一致
即使路径、权限、变量全对,缓存仍可能 0% 命中。根本原因是 Composer 缓存 key 由三个要素共同决定:
- PHP 版本(小版本变动即失效,如 8.2.12 → 8.2.13)
-
composer.lock文件内容(哪怕一行空白变化) - 镜像源 URL(阿里云镜像和 packagist.org 视为不同源)
GitHub Actions 中 actions/cache@v4 的 key 必须含 hashFiles('**/composer.lock'),不能只靠 OS;Docker 构建时要把 COPY composer.json composer.lock ./ 放在 COPY . . 之前,并挂载缓存卷。改了镜像却没清旧缓存,或换了 PHP 小版本但没更新 cache key,缓存就变成“幽灵目录”——看着在,实则从不命中。










