缓存目录挂载为只读时composer clear-cache必然失败,因无法删除文件;应通过composer_cache_dir临时切换至可写路径并配合--no-cache使用。

缓存目录挂载为只读时 composer clear-cache 必然失败
报错类似 failed to remove /home/user/.composer/cache/files/xxx.zip: Read-only file system,说明 Composer 尝试清理的路径(由 composer config --global cache-dir 返回)实际挂载在只读文件系统上。常见于 WSL 的 /mnt/c/、Docker 容器中 bind mount 的宿主机目录、或某些受限 CI 环境(如 GitLab Runner 的 /tmp 挂载点)。此时 composer clear-cache 会直接中断,连部分文件都删不掉。
绕过只读缓存:用 COMPOSER_CACHE_DIR 临时切到可写路径
不硬改全局配置,也不碰只读分区,直接让本次命令走本地可写目录:
- 先创建项目级缓存目录:
mkdir -p .composer-cache && chmod 700 .composer-cache - 执行带环境变量的安装:
COMPOSER_CACHE_DIR="$(pwd)/.composer-cache" composer install --no-cache - CI 场景(如 GitLab)可在
before_script中预设:mkdir -p .composer-cache && chmod 700 .composer-cache,再在后续命令里加COMPOSER_CACHE_DIR="$CI_PROJECT_DIR/.composer-cache"
注意:必须加 --no-cache,否则 Composer 仍可能去读旧的只读缓存,导致解压失败或校验跳过。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
为什么不能先 sudo chown 或 chmod 只读挂载点
对只读文件系统执行权限修复是徒劳的——chown 和 chmod 都会返回 Operation not permitted。强行用 sudo mount -o remount,rw /mnt/c 在 WSL 下不可靠,且会破坏 Windows 文件 ACL;在容器或 CI 中更无权操作底层挂载。唯一可控的是把缓存路径从“不可写”切换到“当前用户确定可写”的位置。
WSL 用户特别注意:/mnt/c/ 下永远别跑 composer install
Windows NTFS 在 WSL 下默认以只读或 ACL 限制模式挂载,即使显示 drwxrwxrwx,实际写入 ZIP 或解压时仍会因元数据不兼容失败。真实错误常藏在 -v 日志末尾,比如 zlib_decode(): data error 或 Corrupted zip file。正确做法是把项目移到 ~/projects/ 这类原生 Linux 路径下,再配 COMPOSER_CACHE_DIR —— 否则每次清理都得手动删 .composer-cache 目录,而不是依赖 clear-cache 命令。










