【问题标题】:Composer.lock incompatibility with actually installed versions of packages on production serverComposer.lock 与生产服务器上实际安装的软件包版本不兼容
【发布时间】:2018-12-27 04:46:48
【问题描述】:

我正在开发一个基于 PHP7 和 Laravel 的项目。不幸的是,依赖项和包版本存在问题。

我猜之前从事该项目的开发人员是通过调用来更新包的

composer update 

在他的本地开发环境中。

因此,已经生成了一个新的 composer.lock 文件,并且所有内容都已推送到生产服务器 - 但是,尚未在生产服务器上调用 composer update 命令...

存在PHP版本不兼容等依赖问题。

这是一个非常大的项目,我现在不想在生产服务器上迁移到更高版本。

我目前正在准备一个开发环境,我关心的是保持所有包版本与生产中的版本的最大兼容性。

通过调用:

composer install

在本地环境中,我收到一系列与软件包版本不兼容有关的错误。

有没有办法根据生产服务器上当前安装的内容重新生成/恢复 composer.json 和 composer.lock?不幸的是,此时生产环境中的 composer.lock 并不能完全反映实际安装版本的当前状态。

什么是从生产服务器上的存储库本地重新创建克隆项目并保持所有包版本的完全兼容性、composer.json 和 composer.lock 的正确形式的安全且良好的方法?

提前感谢您的帮助!

【问题讨论】:

  • 你不使用像 SVN 或 GIT 这样的源代码控制吗?否则不可能恢复到以前的版本。
  • 我收到的项目只有生产版本代码。不幸的是,我无法访问上次提交的历史记录。它由以前的开发人员管理,他没有向我们转让任何东西。实际上,我正在基于 Gitlab 创建新的项目代码存储库。
  • 你最好的办法是尝试根据生产 composer.lock 确定确切的版本,并在本地 composer.json 中严格指定它们(例如,如果有“pacakage/name”:“^ 1" 您将其设为 "package/name": "1.2.3" 以获得所需的确切工作版本)并再次运行 composer update。

标签: php laravel composer-php


【解决方案1】:

不,无法根据/vendor 中已安装的内容重新创建composer.json 文件。您可以查找 /vendor/composer/installed.json 文件作为所有软件包已安装版本的参考。

在这种情况下你需要做的是:

  1. 确保您的本地环境与您的生产环境完全相同。如果需要,您也可以在 composer.json 中使用 platform configuration 来伪造它。
  2. 您的composer.lock 文件没有用。从您的作品中获取/vendor/composer/installed.json 文件。删除您的 /vendor 文件夹。
  3. 运行composer install。写下所有有问题的包并检查 Composer 提供的解决方案。
  4. 根据 Composer 提供的解决方案开始降级 composer.json 中存在问题的软件包的版本。请务必自己查看这些包 - 开发人员并不总是对他们维护包的依赖关系和版本控制的方式非常严格。您始终可以从生产的/vendor/composer/installed.json 获取软件包版本,并将该特定版本放在您的composer.json 中。
  5. 重复步骤 3-4,直到您最终可以生成新的 composer.lock 文件。确保您的 VCS 跟踪您的 composer.jsoncomposer.lock 文件并修复更改。

【讨论】:

    【解决方案2】:

    运行composer updatecomposer install

    您可以使用此代码运行

    composer install --ignore-platform-reqs

    或者更新

    composer update --ignore-platform-reqs

    我找到https://www.wuhaiqiao.com/2020/11/24/329.html

    【讨论】:

      猜你喜欢
      • 2021-03-24
      • 2018-06-11
      • 2021-04-18
      • 2021-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-01
      • 1970-01-01
      相关资源
      最近更新 更多