我写laravel代码已经有一段时间了。目前,我尝试从github克隆一个项目并在本地编辑。我在我的项目目录中安装了composer,但没有包含vendor文件夹。我尝试运行composer install
,但我得到了这个错误
Your lock file does not contain a compatible set of packages. Please run composer update
我该如何解决这个问题?
注意:我试过在以前的克隆上运行composer update
,但没有成功。
9条答案
按热度按时间omvjsjqw1#
运行此命令:
或
hwamh0ep2#
免责声明,此解决方案不会修复PHP 8项目的问题。
在大多数情况下,这是因为PHP 8(在我的例子中,它是GitHub CI操作自动启动使用PHP 8,即使我的项目是php 7. 4)
如果您安装了多个PHP(例如在同一服务器上安装了7.4和8),您可以使用以下方法来修复它。
在composer.json文件中指定php版本
如果您已经提交了锁定文件,请在将以上行添加到composer.json后运行composer update,然后提交新的锁定文件。(请注意,composer update会将您的包升级到最新版本)
xqkwcwgp3#
我用这个命令解决了这个问题:
这可能是因为在项目开发时,composer在另一个版本上,当将主版本从1更改为2时,兼容性被破坏。使用此命令,您可以降级composer,并可能解决此问题
sc4hvdpw4#
您应该尝试运行
composer update --lock
,它将更新所有包并重新创建compose.lock文件。您可以删除composer.lock文件,然后运行
composer install
,这也将重新创建.lock文件。这解决了我的问题。
knpiaxh15#
我在Github Action尝试部署Laravel应用时遇到了这个错误,这可能与OP的情况不同,但没有一个建议对我有效。在这里添加我的答案,以防有人遇到类似的问题。
我不得不在Github操作中禁用
-q
,然后看到它在抱怨没有安装扩展。确保composer的php扩展中的
require
部分与github操作文件中的shivammathur/setup-php@v2
匹配,它将再次部署ht4b089n6#
我在Garuda Linux(基于arch)的cakephp项目中遇到过这个问题
修复:
1.使用
sudo pacman -S php-intl
安装php-intl1.通过编辑php配置来启用php intl(在我的例子中是
/etc/php/php.ini
)。添加extension=intl
或取消注解现有的1.重新启动apache或任何你正在使用的
ev7lccsx7#
我用composer部署另一个项目时也遇到了同样的错误,但问题是缺少php扩展。
我知道你解决了你的问题,但对于任何人看到同样的错误消息,这里是一个一般指导:
在composer安装的依赖性解决步骤中,每次出现冲突时都会显示错误消息
Your lock file does not contain a compatible set of packages. Please run composer update
。(请参阅composer源代码中的相关部分)不过,它并没有揭示真实的的问题,而且很难猜测。
要获得确切的解释,您可以将
--verbose
选项添加到composer install
命令(该选项可用于任何composer命令(请参阅文档)):composer install --verbose
它会给予你完整的消息解释什么是阻止composer安装完成(包版本冲突,缺少php扩展等),然后你就可以解决这个问题。
希望这能帮上忙。
798qvoo88#
在我的例子中,这个问题发生在Ubuntu 20. 04桌面上。这是由于一些包丢失。
我运行了以下命令来安装一些包,然后重新运行Composer install,它工作正常。这些命令是:
然后重新运行composer安装
vbopmzt19#
最近我刚刚遇到这个错误,当我试图运行我的Laravel 7项目,需要**php v7.与php v8*.由于我忘记了我的php版本,我只是尝试了一堆 composer 命令,但只是得到错误后的错误.
无论如何,要解决这个问题,只需根据需要降级/升级php版本。只需在youtube中搜索如何做到这一点。你可以在
composer.json
文件中看到你的项目所需的php版本(只是如果你想知道)你也可以尝试以下方式(但虽然它没有为我工作,似乎它帮助了不少人)
--打开
composer.json
文件并更改php版本如下:"php": "^7.3|^8.1"
--然后运行
composer update