Laravel 作曲家安装给出错误“您的锁定文件不包含兼容的软件包集,请运行作曲家更新”

Posted

技术标签:

【中文标题】Laravel 作曲家安装给出错误“您的锁定文件不包含兼容的软件包集,请运行作曲家更新”【英文标题】:Laravel composer install giving error "Your lock file does not contain a compatible set of packages please run composer update" 【发布时间】:2021-04-06 07:13:58 【问题描述】:

我写 laravel 代码已经有一段时间了。目前,我尝试从 github 克隆一个项目并在本地编辑。我在我的项目目录中安装了作曲家,但没有包含供应商文件夹,我试图运行 composer install 但我给了我这个错误

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

我该如何解决这个问题?

注意:我曾尝试在以前的克隆上运行 composer update,但没有成功。

【问题讨论】:

尝试运行composer update --lock 从存储库中删除 composer.lock 文件并将其添加到 .gitignore 。由于您正在进行全新安装,只需删除文件和供应商文件夹并执行 composer install 这解决了问题。非常感谢! 绝对不能将composer.lock 放入.gitignore,因为您绝对应该将该文件置于版本控制之下。 【参考方案1】:

运行这个命令:

composer install --ignore-platform-reqs

composer update --ignore-platform-reqs

【讨论】:

它也适用于 Ubuntu【参考方案2】:

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

在大多数情况下,这是由于 PHP 8 造成的(在我的情况下,即使我的项目是 php 7.4,GitHub CI 操作也会使用 PHP 8 自动启动)

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

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

"config": 
        "platform": 
            "php": "7.3"
        
    ,

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

【讨论】:

这更有意义。这应该是公认的答案。谢谢解释【参考方案3】:

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

composer self-update --1

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

【讨论】:

【参考方案4】:

您应该尝试运行composer update --lock,它将更新所有包并重新创建 compose.lock 文件。

您可以删除 composer.lock 文件并运行composer install,这也会重新创建 .lock 文件。

这解决了我的问题。

【讨论】:

【参考方案5】:

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

我不得不在 Github Actions 中禁用 -q 并看到它抱怨未安装扩展。

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

【讨论】:

【参考方案6】:

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

修复:

    使用sudo pacman -S php-intl安装php-intl 通过编辑 php 配置启用 php intl(在我的情况下为 /etc/php/php.ini)。 添加extension=intl 或取消注释现有的 重启 apache 或你正在使用的任何东西

【讨论】:

【参考方案7】:

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

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

在 composer install 的依赖解决步骤中每次发生冲突时都会显示错误消息Your lock file does not contain a compatible set of packages. Please run composer update。 (见the relevant part in composer source code)

但它并没有说明真正的问题,而且可能很难猜测。

要获得确切的解释,您可以将--verbose 选项添加到composer install 命令(该选项适用于任何作曲家命令(see the doc)):composer install --verbose

它将为您提供完整的消息,解释究竟是什么阻止了 composer install 完成(包版本冲突、缺少 php 扩展等),然后您将能够解决问题。

希望这会有所帮助。

【讨论】:

【参考方案8】:

在我的情况下,这个问题发生在 Ubuntu 20.04 Desktop 中。这是由于缺少一些软件包。

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

sudo apt-get install php-mbstring

sudo apt-get install php-xml

然后重新运行 composer install

【讨论】:

以上是关于Laravel 作曲家安装给出错误“您的锁定文件不包含兼容的软件包集,请运行作曲家更新”的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 作曲家更新给出错误

无法使用 composer 在 Windows 上安装 laravel,导致错误无法打开 Stream:Permission denied

为啥我在作曲家安装后在 Laravel 中收到 500 服务器错误 [关闭]

Laravel作曲家安装错误[golonka / BBcodeParser] 404

使用作曲家在 Laravel 中安装错误

XAMPP:作曲家返回错误而不是创建新的laravel项目