为什么Composer创建项目时安装依赖后立即删除文件并出现循环?
Composer安装后自动删除文件的解决方法
你遇到的安装完成即删除包文件、反复执行依赖命令无响应的问题,核心原因是Composer 2.0.12与PHP 8.0.3的兼容逻辑错误,和你的目录配置、网络环境无关。
从你提供的安装日志可以看到,Composer正常安装流程会在临时目录解压完成后,将文件移动到vendor下的对应包目录,再清理临时文件;但当前流程直接跳过了文件移动步骤,执行了目标包目录的删除操作——这是旧版本Composer在判断目录写入权限时出现了错误结果,直接触发了异常回滚的清理逻辑。
对应处理步骤
- 升级修复Composer版本
2.0.12是早期的Composer2版本,对PHP8.0的目录操作支持不完善。先执行composer self-update --stable升级到当前稳定的2.x版本;如果是通过系统包管理器安装的Composer,self-update无法修改系统目录下的程序文件,需要直接替换为最新的Composer phar包,并给程序文件加上可执行权限,避免权限不足触发回滚。 - 清理残留的异常文件
之前的异常安装会留下损坏的composer.lock文件和无效的缓存记录,这也是你反复执行依赖命令都提示“无内容需要安装”的原因:Composer会依据残留的lock文件判断包已经正常安装,不会主动重新拉取。直接删除项目目录下的vendor文件夹、composer.lock文件,再执行composer clearcache清空本地包缓存即可。 - 绕开参数bug重新安装
重新执行创建项目的命令时,可以先去掉--remove-vcs参数:composer create-project otra/skeleton otra-user -vvv,等确认vendor/otra/otra目录下的所有包文件都正常存在后,再手动删除项目根目录下的.git文件夹,实现和--remove-vcs相同的效果,避免触发旧版本的参数逻辑bug。
内容的提问来源于stack exchange,提问作者lionelp
相关产品推荐
相关产品推荐

