在后处理缓存清除步骤中运行“composer require ...”失败
Posted
技术标签:
【中文标题】在后处理缓存清除步骤中运行“composer require ...”失败【英文标题】:Running `composer require ...` fails on post process cache clearing step 【发布时间】:2018-04-26 14:30:36 【问题描述】:我似乎无法使用
完成捆绑包的安装composer require <bundle-name>
因为这些错误:
[Symfony\Component\Filesystem\Exception\IOException] 失败 删除目录“/var/www/emerson-suite/var/cache/de~/pools/rDfZ I1q9aB": .
错误的完整控制台输出:
生成自动加载文件 ocramius/package-versions: 生成 版本类... ocramius/package-versions: ...完成生成版本 类
Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::buildBootstrap Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::clearCache
// 使用调试清除开发环境的缓存 // true
Symfony\Component\Filesystem\Exception\IOException] 失败 删除目录“/var/www/emerson-suite/var/cache/de~/pools/rDfZ I1q9aB": .
缓存:清除 [--no-warmup] [--no-optional-warmers] [-h|--help] [-q|--quiet] [-v|vv|vvv|--verbose] [-V|--version] [--ansi] [--no-ansi] [-n|--no-interaction] [-e|--env ENV] [--no-debug] [--]
脚本 Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::clearCache 处理 post-update-cmd 事件因异常而终止
安装失败,正在将 ./composer.json 还原为原始文件 内容。
[RuntimeException] 执行时出错 "'cache:clear --no-warmup'" command: // 清除缓存 带调试的开发环境 // true
[Symfony\组件\文件系统\异常\IOException] 无法删除目录“/var/www/emerson-suite/var/cache/de~/pools/rDfZ I1q9aB": .
缓存:清除 [--no-warmup] [--no-optional-warmers] [-h|--help] [-q|--quiet] [-v|vv|vvv|--verbose] [-V|--version] [--ansi] [--no-ansi] [-n|--no-interaction] [-e|--env ENV] [--no-debug] [--]
尝试使用 sudo
和不使用来运行 composer。
我运行的命令是:$ sudo composer require javiereguiluz/easyadmin-bundle
不知道该怎么做,感谢任何帮助。
更新
我的环境是 Mac OS X 上 Vagrant VM 上的 Ubuntu。
【问题讨论】:
如果您自己删除目录会怎样?当我遇到这类问题时,我会执行rm -rf var/cache/* vendor/*
。
我知道,我见过很多人有类似的问题。我自己试过删除目录,我已经停止了所有编辑器/ide,但即使有一个清晰的文件夹,作曲家安装过程也会在缓存目录中创建 de~ 文件夹,所以我不知道为什么会这样......跨度>
我已使用此博客上的说明创建了一个解决方法,在安装新捆绑包期间,然后我恢复到以前的设置,这并不理想,我还在寻找一个永久的解决方案,但它让我现在可以完成工作:beberlei.de/2013/08/19/speedup_symfony2_on_vagrant_boxes.html
【参考方案1】:
似乎这可能是涉及操作系统内部权限以及可能是开发环境的问题。
尝试在这里寻找答案,很多人似乎都有这个问题。 https://github.com/symfony/symfony/issues/19363#issuecomment-264655158
【讨论】:
我正在使用 vagrant 并以 vagrant 用户 (vagrant ssh) 身份运行它 您是否尝试按照链接问题中的说明将缓存和日志存储在共享文件夹之外?【参考方案2】:目录 ./de~/ 是旧的 /dev/ 目录,因为它已被移动以准备删除。 /pools/ 目录是在应用程序运行期间构建的缓存。在初始启动时,它使用一个用户帐户,但网络服务器正在运行另一个用户帐户,因此原始用户帐户没有删除某些文件的权限。
解决这个问题的简单方法——至少在开发环境中——是sudo rm -rf .../de~
。当我在 prod 上删除旧版本的代码时,我经常不得不这样做,因为不仅仅是原始部署用户,写入缓存目录。
【讨论】:
以上是关于在后处理缓存清除步骤中运行“composer require ...”失败的主要内容,如果未能解决你的问题,请参考以下文章