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 作曲家安装给出错误“您的锁定文件不包含兼容的软件包集,请运行作曲家更新”的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 composer 在 Windows 上安装 laravel,导致错误无法打开 Stream:Permission denied
为啥我在作曲家安装后在 Laravel 中收到 500 服务器错误 [关闭]