Php composer安装更新的composer.json文件

Php composer安装更新的composer.json文件,php,composer-php,Php,Composer Php,我熟悉这样一个概念,即当存在composer.lock文件时,composer install命令将从该文件运行软件包 因此,当我在composer.json中添加(手动放置vendor/pkg列表)到“require”并运行命令install时,只有那些锁定在composer.lock文件中的软件包才能安装 但是当我发现我的高级开发人员忽略了git的composer.lock文件时,我对它的理解发生了冲突 当composer.json文件上的任何更新被推送到部署服务器时,命令install正在

我熟悉这样一个概念,即当存在composer.lock文件时,
composer install
命令将从该文件运行软件包

因此,当我在
composer.json
中添加(手动放置
vendor/pkg
列表)到“require”并运行
命令install
时,只有那些锁定在
composer.lock
文件中的软件包才能安装

但是当我发现我的高级开发人员忽略了git的
composer.lock
文件时,我对它的理解发生了冲突

composer.json
文件上的任何更新被推送到部署服务器时,
命令install
正在运行,它似乎在“安装”更新的软件包

让我困惑的是,由于部署服务器的composer.lock文件中没有提到新添加的包,它是如何安装的

我在我的本地电脑上也做了同样的尝试:

  • 首先在
    composer.json的
    require
    中添加了
    vendor/pkg
  • 已尝试运行
    命令安装
  • 而是得到了这个警告:

    warning: the lock file is not up to date with the latest changes....
    nothing to install or update.
    
    所以我的问题是:

    为什么会出现两种不同的行为

    如何在部署服务器中而不是本地安装.json和.lock中新添加的包

    我已经研究这个有一段时间了,它让我感到不安


    也许我弄错了。有人来解决这个问题吗?

    有几个选项:

  • 添加具有
    composer require vendor/pkg的供应商
  • 按原样添加composer.json,然后运行
    composer update vendor/pkg
    (运行composer update而不使用包名将更新所有文件)

  • composer.json
    中添加新的依赖项时,必须运行
    composer update
    来更新
    composer.lock
    文件,然后composer将查看新的
    composer.lock
    来安装所有依赖项。另外,您不应该忽略git中的composer.lock,以确保您的开发和生产都使用相同的依赖项版本,如果它们使用不同的版本,您将更难进行调试