在共享 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