file_put_contents(/root/.composer/cache/repo/https---flex.symfony.com/):无法打开流:是目录错误

rmz*_*k 1 8 symfony composer-php docker symfony-flex

我在 docker 容器中使用 composer install 构建了我的 symfony 4 应用程序。

作曲家版本 1.10.19

但我得到了这个错误。

[ErrorException] file_put_contents(/root/.composer/cache/repo/https---flex.symfony.com/): 无法打开流:是一个目录

如果我在没有任何中断的情况下再运行 composer install 1 次,则构建成功。

如果我删除项目目录上的 vendor 和 var/cache 目录,则会再次出现错误。

我试过这个方法:

  • 触发“composer clearcache”命令没有成功
  • 删除 ~/.composer 目录没有成功
  • chmod -R 777 ~/.composer 没有成功

在不同容器内构建相同项目的一些成功。我的容器以此卷开头:

  • 项目目录

  • ~/.ssh 目录

我在网上搜索但没有解决方案。请帮忙。

小智 3

这是 Flex 版本 <1.13.4 上的错误

在最新版本(我写的1.13.4)中,问题已解决。

问题是:

使用空键写入缓存将失败,并显示“无法打开流:是一个目录”,因此不要尝试这样做。

当 cloudflare(或后端服务)为我们的 CI 服务器 (AWS) 但不是为我们的本地系统响应“最后修改”标头时,我们注意到了这一点。这触发了条件变为真,并且它尝试写入没有文件名的缓存文件。

这个问题通过 commit 解决了这个问题已通过提交d81196c3f3b5

编辑:正如@Tmb 发布的,解决方法是使用:composer install --no-cache ...