Composer本身不提供临时文件路径配置选项,其临时文件实际由PHP的sys_get_temp_dir()决定,存放于/tmp或%APPDATA%\Local\Temp等系统临时目录,需通过php.ini或环境变量TEMP/TMP调整,而非composer config。

composer 本身不提供配置“临时文件”存放路径的选项——它没有 temp-dir、tmp-dir 或类似配置项。你看到的“临时文件”,绝大多数不是 Composer 主动写入的,而是 PHP 运行时或你本地构建流程产生的副产物。
sys_get_temp_dir() 是真正的临时文件落点
Composer 在下载、解压、安装包过程中,会依赖 PHP 的 sys_get_temp_dir() 返回值(通常是 /tmp、C:\Users\XXX\AppData\Local\Temp 或 %APPDATA%\Local\Temp)。这些目录里会出现:
-
composer_*.zip(下载后未清理的压缩包) -
php*.tmp(PHP 解压/流操作用的临时文件) -
phar-*.tmp(PHAR 相关临时提取)
这类文件不会被 composer clear-cache 清理,也不会随 vendor/ 删除而消失。
- 这些文件由 PHP 底层 I/O 触发,Composer 不控制其路径
- 无法通过
composer config修改,改了也没用 - 真正要干预,得改 PHP 配置:
sys_temp_dir(php.ini)或环境变量TEMP/TMP
常见错误现象:
-
df -i显示 inode 耗尽,但磁盘空间充足 -
composer install卡在“Extracting archive…”后无响应 -
/tmp下堆积大量composer_*.zip,重启后自动消失(因 tmpfs 清理)
解决建议:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- Linux/macOS:在 php.ini 中加
sys_temp_dir = /var/tmp,确保该目录存在且可写 - Windows:设系统环境变量
TEMP=D:\php-temp,并创建对应目录、赋予权限 - CI/CD 中务必检查容器内
TEMP是否指向持久卷,否则每次构建都新建 tmp 目录,旧文件残留
cache-dir 不是临时路径,别混淆
很多人误以为改了 cache-dir 就能管住“临时文件”,其实:
-
cache-dir只控制 Composer 缓存内容:如repo/(元数据)、files/(已下载的 zip 包)、archived/(dist 归档) - 它不影响
sys_get_temp_dir()行为,也不影响vendor/构建过程中的中间文件(如vendor/composer/installed.json生成时的临时写入) - 改错
cache-dir的典型后果是:缓存“存在但永不命中”,composer install仍反复下载同一包
验证是否真生效:
- 运行
composer diag,看Cache directory:行输出是否为你设的路径 - 若仍是默认路径,优先检查
COMPOSER_CACHE_DIR环境变量是否被设错(它优先级最高)
构建脚本里怎么安全清理这些“临时文件”
如果你在 CI 或部署脚本中需要自动清理,不要盲目 rm -rf ~/.composer/cache 或 del /s/q %TEMP%\composer_*:
-
~/.composer/cache是缓存,删了就失去复用价值;应只清无效缓存:composer clear-cache -
%TEMP%或/tmp下的composer_*.zip才是真正该定期清理的目标 - 推荐做法(Bash):
find "$(php -r "echo sys_get_temp_dir();")" -name "composer_*.zip" -mmin +60 -delete
- PowerShell 等价命令:
Get-ChildItem $env:TEMP -Filter "composer_*.zip" | Where-Object {$_.LastWriteTime -lt (Get-Date).AddMinutes(-60)} | Remove-Item
注意:-mmin +60 是防误删——刚下载的包还在用,不能立刻删。
临时文件路径不受 Composer 控制,它只是 PHP 运行时的影子。想让它稳定,就得管好 PHP 的 sys_temp_dir 和系统 TEMP,而不是在 composer config 里反复试错。

















