Laravel Composer 安装出现错误“您的锁定文件不包含兼容的软件包集,请运行 Composer update”

问题描述 投票:0回答:8

我编写 Laravel 代码已经有一段时间了。目前,我尝试从 github 克隆一个项目并在本地进行编辑。我在项目目录中安装了 Composer,但未包含供应商文件夹,我尝试运行

composer install
但出现此错误

Your lock file does not contain a compatible set of packages. Please run composer update

我该如何解决这个问题?

注意:我尝试在以前的克隆上运行

composer update
,但没有成功。

php laravel composer-php
8个回答
24
投票

免责声明,此解决方案不会解决 PHP 8 项目的问题。

在大多数情况下,这是由于 PHP 8 导致的(在我的例子中,GitHub CI 操作自动使用 PHP 8 启动,即使我的项目是 php 7.4)

如果您安装了多个 PHP(例如,同一服务器上的 7.4 和 8),可以通过以下方法修复它。

在你的composer.json文件中指定你的php版本

"config": {
        "platform": {
            "php": "7.3"
        }
    },

如果您已经提交了锁定文件,请在将以上行添加到composer.json后运行composer update,然后提交新的锁定文件。 (请注意,composer 更新会将您的软件包升级到最新版本)


13
投票

我用这个命令解决了这个问题:

composer self-update --1

它可能有效,因为在项目开发时,作曲家使用的是另一个版本,当将主要版本从 1 更改为 2 时,兼容性被破坏。使用此命令,您可以降级 Composer,并且可能会解决这个问题


9
投票

您应该尝试运行

composer update --lock
这将更新所有包并重新创建 compose.lock 文件。

您可以删除composer.lock文件并运行

composer install
,这也将重新创建.lock文件。

这解决了我的问题。


7
投票

我在尝试部署 Laravel 应用程序时遇到了 Github Actions 错误,这可能与 OP 的情况不同,但没有一个建议对我有用。在这里添加我的答案,以防万一其他人遇到与我类似的问题。

我必须在 Github Actions 中禁用

-q
,然后看到它抱怨未安装扩展。

确保 Composer 的 php 扩展的

require
部分与
extensions:
的 github 操作文件中的
shivammathur/setup-php@v2
相匹配,它将再次部署


2
投票

就我而言,这个问题发生在 Ubuntu 20.04 桌面上。这是由于一些包裹丢失造成的。

我运行了以下命令来安装一些软件包,然后重新运行 Composer install 并使其正常工作。命令是:

sudo apt-get install php-mbstring

sudo apt-get install php-xml

然后重新运行composer install


1
投票

我在使用 Composer 部署另一个项目时遇到了同样的错误,但问题是缺少 php 扩展。

我知道您解决了问题,但对于看到相同错误消息的任何人,这里有一般指导:

在composer安装的依赖解决步骤中,每次出现冲突时都会显示错误消息

Your lock file does not contain a compatible set of packages. Please run composer update
。 (参见composer源代码中的相关部分

它并没有告知真正的问题,而且可能很难猜测。

要获得确切的解释,您可以将

--verbose
选项添加到
composer install
命令(该选项可用于任何作曲家命令(请参阅文档)):
composer install --verbose

它将向您提供完整的消息,解释到底是什么阻止了 Composer 安装完成(软件包版本冲突、缺少 php 扩展等),然后您就可以解决问题。

希望这能有所帮助。


1
投票

最近,当我尝试运行我的 Laravel 7 项目时,我刚刚遇到了这个错误,该项目需要 php v7.* 和 php v8。由于我忘记了我的 php 版本,我只是尝试了一堆 Composer 命令,但错误不断。

无论如何,要解决这个问题,只需根据需要降级/升级 php 版本即可。只需在 youtube 中搜索如何执行此操作即可。 你可以在

composer.json
文件中看到你的项目所需的 php 版本(如果你想知道的话)

你也可以尝试以下方式(虽然它对我不起作用,但似乎对很多人有帮助)

-- 打开

composer.json
文件并将 php 版本更改为如下所示:
"php": "^7.3|^8.1"

-- 然后运行

composer update


0
投票

我在 garuda linux(基于 arch)中的 cakephp 项目遇到了这个问题

修复:

  1. 使用
    sudo pacman -S php-intl
  2. 安装 php-intl
  3. 通过编辑 php 配置来启用 php intl(在我的例子中是
    /etc/php/php.ini
    )。 添加
    extension=intl
    或取消注释现有的
  4. 重新启动 apache 或任何你正在使用的东西
© www.soinside.com 2019 - 2024. All rights reserved.