在共享 2 个环境的机器上运行 Symfony 3.2 项目中的作曲家安装

Posted

技术标签:

【中文标题】在共享 2 个环境的机器上运行 Symfony 3.2 项目中的作曲家安装【英文标题】:Running composer installation in a Symfony 3.2 project on a machine that shares 2 environments 【发布时间】:2021-07-17 09:14:24 【问题描述】:

我在同一台服务器的 2 个不同目录中,如下所示:

/var/www/pre.myproject.com/ /var/www/myproject.com/

pre.myproject.com 是生产环境 myproject.com

的完整副本

当我尝试在文件夹 /var/www/pre.myproject.com/ 中运行命令 composer install 时:

 composer install --no-dev --optimize-autoloader

我看到以下错误:

Cannot create cache directory /var/www/myproject.com/.composer/cache/repo/https---packagist.org/, or directory is not writable. Proceeding without cache
Cannot create cache directory /var/www/myproject.com/.composer/cache/files/, or directory is not writable.Proceeding without cache

如果我目前在 pre.myproject.com,为什么要尝试在 myproject.com 中进行更改?

我应该更改我的文件夹 pre.myproject.com 中的哪些文件以在 Symfony3 中启用新环境?所以作曲家可以在这个环境和这个目录中正确安装?

【问题讨论】:

您尝试过什么调试问题? Composer 二进制文件在哪里? 你应该做的不是composer install,而是composer update,因为composer.json文件应该已经存在,它只会读取它并下载依赖包 @vincentPHILIPPE 为什么要这样做? composer update 将更新依赖项,只要这不是 OP 想要做的,这可能会导致更多问题 @NicoHaase 他想要一份完整的生产副本。 composer update 只会读取现有的 composer.json 并安装依赖项?为什么你认为它会导致一些问题? composer update更新依赖关系,这就是为什么它被称为update 【参考方案1】:

您尝试做的是使用包含所有依赖项的现有 composer.json 文件重新安装现有 Symfony 项目。

你应该做的不是composer install,而是composer update,因为composer.json文件应该已经存在,它只会读取它并下载依赖包

composer update

update命令从当前读取composer.json文件 目录,对其进行处理,然后更新、删除或安装所有 依赖关系。

当我从 development 分支导入新功能时,这是我在 production 服务器上使用的。


编辑

您应该添加--no-cache 选项以绕过缓存。

【讨论】:

“更新、删除或安装所有依赖项”——这不是我所说的生产系统的精确副本 composer.json 已经包含应安装的依赖项。如果他不想拥有依赖项的完整副本,他为什么还要尝试composer install?当然,他要找的是得到prodcution环境的副本,但是要让它工作,他需要安装依赖。当然,它也会删除未使用的依赖项,这很好,因为这些依赖项没有被使用。这保留了生产系统的精确副本,因为两者都使用相同的 composer.json 文件。 composer.lock 包含 resolved 依赖项。要安装生产系统的精确副本,应该使用它。使用composer update 将安装一组不同 依赖项。另外,这如何解决使用来自另一个父目录的缓存目录的问题? 我猜他只要加--no-cache就行了。但我承认你是对的。 composer update 不会是解决方案

以上是关于在共享 2 个环境的机器上运行 Symfony 3.2 项目中的作曲家安装的主要内容,如果未能解决你的问题,请参考以下文章

生产环境中的 Symfony 2 Assetic css 和 js 404

Symfony 3 有 1 个虚拟主机和 2 个环境

Symfony 5 和 Doctrine,找不到使用 3 个相关实体获取结果的方法

symfony 应用程序与域/子域共享登录 cookie

Symfony 2.8 -> 3.4 本地开发速度降低

Vagrant 和 symfony2