8

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

作曲家版本 1.10.19

但我得到了这个错误。

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

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

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

我试过这个方法:

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

在不同容器内构建相同项目的一些成功。我的容器从这个卷开始:

  • 项目目录

  • ~/.ssh 目录

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

4

1 回答 1

3

这是 Flex 版本 <1.13.4 的错误

在最新版本中(当我写 1.13.4 时)这个问题得到了解决。

问题是:

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

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

提交d81196c3f3b5解决了这个问题

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

于 2021-08-03T09:09:17.267 回答