ChatGPT解决这个技术问题 Extra ChatGPT

如何解决“您的要求无法解析为一组可安装的软件包”错误?

当我运行 composer update 时,我收到了一些有线输出。

https://i.stack.imgur.com/hVM3L.png

这是我的 composer.json 的样子。

{
    "name": "laravel/laravel",
    "description": "The Laravel Framework.", "keywords": ["framework", "laravel"],
    "license": "MIT",
    "repositories": [{
        "type": "vcs",
        "url": "https://github.com/Zizaco/ardent.git"
    }],
    "require-dev": {
        "phpunit/phpunit": "4.3.*"
    },
    "require": {
        "laravel/framework": "4.2.*", 
        "laravelbook/ardent": "dev-master as 2.4.0", 
        "zizaco/entrust": "dev-master", 
        "sebklaus/profiler": "dev-master", 
        "doctrine/dbal": "dev-master"
    },
    "autoload": {
        "classmap": [
            "app/commands",
            "app/controllers",
            "app/models",
            "app/database/migrations", "app/database/seeds", "app/tests",
            "app/libraries"
        ]
    },
    "scripts": {
        "post-install-cmd": [
            "php artisan clear-compiled", 
            "php artisan optimize"
        ],
        "post-update-cmd": [
            "php artisan clear-compiled", 
            "php artisan optimize"
        ],
        "post-create-project-cmd": [
            "php artisan key:generate"
        ]
    },
    "config": {
        "preferred-install": "dist"
    },
    "minimum-stability": "stable"
}

我该如何解决?

嘿,请把composer.json的图片换成composer.json的文字内容。这允许问题再现和该文件的编辑为了帮助您。谢谢。
@JensA.Koch。我希望我能。那是我一开始打算做的。 StackOverflow 阻止我为像我这样的低代表人发布大量代码。对不起,伙计们-我希望我没有那个限制。
啊,对。我的错,没有考虑到你的分数。会投票让你得到更多......

G
Gufran Hasan

运行此命令:

作曲家安装--ignore-platform-reqs

或者

作曲家更新--ignore-platform-reqs


像魅力一样工作!谢谢!
使用 docker 时很有用。
使用这个有什么缺点吗?
太棒了,这个命令按预期工作。
这个需要解释
d
danronmoon

您的软件依赖项存在不兼容的版本冲突。

同时你想安装任何 Laravel 4.2.x 版本,并从它的 master 分支安装“zizaco/entrust”。而那个 master 分支至少需要 Laravel 5.0(粗略地说)。

问题来自对分支的依赖。很可能 zizaco/entrust 包曾经在其 master 分支中使用 Laravel 4.2,并且您当时能够安装您的依赖项。但是,当此分支更新为不兼容的版本要求时,您将永远无法运行 composer update 并获得更新的依赖项。

始终使用标记版本!理想情况下,您使用允许兼容更新的宽松版本要求。这应该表示为两个波浪号的版本要求:~1.2 将安装 1.2.0 及更高版本(如 1.2.99 或 1.2.100),以及 1.3 及更高版本。如果您需要某个补丁版本:插入符号三号版本 ^1.2.10 将安装 1.2.10 或更高版本,以及 1.3 及更高版本。

使用此版本要求而不是 dev-master 将允许您使用已发布版本而不是 master 分支中的不稳定状态,并允许您处理仍然适用于 Laravel 4.2 的最新版本。我想那将是 zizaco/entrust 1.3.0 版,但 1.2 版也符合条件。使用 "zizaco/entrust": "~1.2"


这篇文章的关键答案是"zizaco/entrust": "~1.2"
了解错误消息的哪一部分让您认为 zizaco/entrust 需要 Laravel 5.0 会很有帮助。
好吧,如果我没记错的话,我正在查看提到的库并在它的 composer.json 中看到了要求。而且我可能解释了我所看到的,因为没有明确的要求,而是其中的一些组成部分。在错误信息中,您看到 zizaco/entrust 需要 illuminate/support ^5.0,如果您知道“Laravel”和“Illuminate”基本相同,那么结论应该是正确的。
A
Ankit

我面临同样的问题。我正在使用“流明”微服务框架。我最近通过安装两个软件包解决了同样的问题:-

sudo apt-get install php7.0-mbstring、sudo apt-get install php7.0-xml 或 sudo apt-get install php-xml

安装后,您需要执行此命令:- composer update

希望,它会解决问题。我在我的系统上工作。


人们不应该在生产中使用作曲家更新,这可能会导致问题。 composer install 是正确的安装命令。我对你投了反对票,但我投了赞成票,因为 1 和 2 是正确的。
在我的情况下,安装 php-gd 就可以了。即使打开了详细 (-vvv) 标志,Composer 也没有在失败输出中的任何地方提及这一点。
我正在开发 Ubuntu 20.04。仅运行此命令就足够了:sudo apt-get install php-xml
w
wingman__7

我使用 Windows 10 机器与 PHP 8 和 Lavarel 8 一起工作,我得到了同样的错误,我使用了以下命令:-

composer update --ignore-platform-reqs

无论版本冲突如何,都更新所有软件包。


V
Vivek Maru

最简单的解决方案是添加 --ignore-platform-reqs 标志。

如果您正在运行 composer install 或 composer update 使用 --ignore-platform-reqs 标志

例子

composer install --ignore-platform-reqs

或者

composer update --ignore-platform-reqs

这应该可以解决问题!


E
Estus Flask

那些dev-master是自动添加的吗?避免将它们作为不必要的版本限制,对于“任何合适的版本”,请使用 "*",如果您不介意开发包,请使用 "@dev"。我的猜测是 Entrust 是潜在的麻烦制造者。

此外,"minimum-stability": "stable" 施加了额外的约束,并且

"minimum-stability": "dev",
"prefer-stable": true

更无冲突,将其视为经验法则。


问题是使用不稳定的开发版本。盲目地允许它们(即使更喜欢稳定)是无法维护的混乱的关键。
@Sven 答案直接解决了问题,即 dev-master 约束。它并没有说明松散的版本约束是好的——它们可能会导致一团糟,这是开发人员的良心。答案对标签没有固执己见的事实并没有造成错误。顺便说一句,我感谢您的反对。否决相邻的答案是非常合乎道德的。
我同意根据所要求的内容,这个答案是正确的。它也对我有用。投票赞成!
n
nicolasDevDes

我解决了将 'laravel/framework' 依赖版本从 "^8.0" 设置为 "^7.0" 的相同问题。

之后运行 composer update --ignore-platform-reqs 就可以了

composer.json


截至今天,最新的 Laravel 框架版本是 7.10。那么你的依赖是如何上升到 8.0 的呢?
老实说,我不确定,因为我对 Laravel 还很陌生。这是一个全新的安装,弄乱了 composer.json 文件
S
Sarthak Raval

我在 Laravel v8.49.0(PHP v8.0.6)中面临同样的问题。通过安装包使用 Composer 我最近通过安装两个包解决了同样的问题:-

作曲家创建项目 laravel/laravel myapp

https://i.stack.imgur.com/the0g.png

作曲家更新

作曲家更新--ignore-platform-reqs

或者

作曲家安装--ignore-platform-reqs

检查启动服务器

php工匠服务

https://i.stack.imgur.com/GL76g.png


服务器已启动并获得“未指定应用程序加密密钥”检查此 stackoverflow.com/a/68219720/12635334
T
Tahir Yasin

在 composer.json 内 require 数组的末尾添加 "barryvdh/laravel-cors": "^0.7.3"

保存 composer.json 并运行 composer update

你完成了!


人们永远不应该使用 composer update 来安装依赖项。它应该使用作曲家安装。 Composer 更新将更新所有依赖项,这可能是灾难性的。
N
NadZ

我通过添加 "zizaco/entrust": "*" 而不是 "zizaco/entrust": "~1.2" 解决了同样的错误。


R
Robert Yeomans

您必须位于正确的目录中,因此 cd 进入该目录,然后:composer update --ignore-platform-reqs 如果您之前按照 Vivek M 的建议安装了 composer。我的问题是错误的目录。 cd 到:xampp/htdocs/laravelProjects/laravelP1


B
BlackPearl

我在 Laravel 5.8 中遇到了这个问题,我所做的是为每个库和所有正确安装的地方做 composer require

像这样:

而不是将其添加到 composer.json 文件或指定版本:

composer require msurguy/honeypot: dev-master

相反,我没有指定任何版本:

composer require msurguy/honeypot

希望对你有帮助,谢谢


O
Oleg Nurutdinov
"config": {
  "platform": {
    "ext-pcntl": "7.2",
    "ext-posix": "7.2"
  }
}

H
Hassan Elshazly Eida

如果您使用的是 php ^8.0

打开可用 php 版本的列表

   sudo update-alternatives --config php

切换到 PHP 7.2 以上的旧版本,选择其中一个,然后更新作曲家

composer update

r
reza sabzi nejad

根据您系统上安装的 PHP 版本安装以下内容:

sudo apt-get install php8.0-curl php8.0-gd php8.0-xsl php8.0-dom

最后再次尝试用composer创建laravel项目

composer create-project laravel/laravel myProject

S
Simon Njenga

原因:

发生错误是因为您的项目文件夹归根用户所有。

解决方案

将所有权更改为当前登录的用户,而不是 root 用户。如果您只有 root 作为唯一用户,请创建另一个具有 root 权限的用户。

$ sudo chown -R current_user /my/project/directory/

然后

$作曲家安装


S
Skatox

只需在 php.ini 文件中激活 curl

;extension=php_curl.dll

extension=php_curl.dll

然后作曲家安装


我不太确定激活 php_curl.dll 会对版本不匹配(Laravel 4.x 与 Laravel 5.x)做什么。你能解释一下这将如何解决这个问题吗?
我遇到了上述问题,所以我激活了 curl,问题就解决了。我相信作曲家或 laravel 使用这个 php 扩展来下载包。在我的情况下,它不会与 laravel 包完全不兼容,只是作曲家很难下载这些包。

关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅