【问题标题】:How can I resolve "Your requirements could not be resolved to an installable set of packages" error?如何解决“您的要求无法解析为一组可安装的软件包”错误?
【发布时间】:2015-06-01 20:17:04
【问题描述】:

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

这是我的 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 阻止我为像我这样的低代表人发布大量代码。对不起,伙计们-我希望我没有那个限制。
  • 啊,对。我的错,没有考虑到你的分数。会投票让你得到更多......

标签: laravel laravel-4 composer-php


【解决方案1】:

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

如果您正在运行 composer installcomposer update,请将其与 --ignore-platform-reqs 标志一起使用

示例

composer install --ignore-platform-reqs

或者

composer update --ignore-platform-reqs

这应该可以解决问题!

【讨论】:

    【解决方案2】:

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

    作曲家创建项目 laravel/laravel myapp

    作曲家更新

    composer 更新 --ignore-platform-reqs

    composer install --ignore-platform-reqs

    检查启动服务器

    php 工匠服务

    【讨论】:

    【解决方案3】:

    如果您使用的是 php ^8.0

    打开可用 php 版本列表

       sudo update-alternatives --config php
    

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

    composer update
    

    【讨论】:

      【解决方案4】:

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

      composer update --ignore-platform-reqs

      更新所有的包,不管版本冲突。

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          【解决方案6】:

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

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

          composer.json

          【讨论】:

          • 截至今天,最新的 Laravel 框架版本是 7.10。那么你的依赖是如何上升到 8.0 的呢?
          • 我不确定,因为我对 Laravel 还很陌生。这是一个全新的安装,弄乱了 composer.json 文件
          【解决方案7】:
          "config": {
            "platform": {
              "ext-pcntl": "7.2",
              "ext-posix": "7.2"
            }
          }
          

          【讨论】:

            【解决方案8】:

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

            像这样:

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

            composer require msurguy/honeypot: dev-master
            

            我没有指定任何版本:

            composer require msurguy/honeypot
            

            希望对你有帮助,谢谢

            【讨论】:

              【解决方案9】:

              运行这个命令:

              composer install --ignore-platform-reqs

              composer 更新 --ignore-platform-reqs

              【讨论】:

              • 工作就像一个魅力!谢谢!
              • 在使用 docker 时很有用。
              • 使用这个有什么缺点吗?
              • @AdemTepe,请这个hannesvdvreken.com/2015/01/18/…
              • 太棒了,这个命令按预期工作。
              【解决方案10】:

              原因:

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

              解决方案

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

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

              然后

              $ 作曲家安装

              【讨论】:

                【解决方案11】:

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

                同时你想安装任何 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 及更高版本。如果您需要某个补丁版本:Caret-three-number version ^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"
                • 了解错误消息的哪一部分让您认为Laravel 5.0zizaco/entrust 所必需的会很有帮助。
                • 好吧,如果我没记错的话,我正在查看提到的库,并在 composer.json 中看到了要求。而且我可能解释了我所看到的,因为没有明确的要求,而是其中的一些组成部分。在报错信息中,你看到zizaco/entrust需要illuminate/support ^5.0,如果你知道“Laravel”和“Illuminate”基本上是一回事,那么结论应该是正确的。
                【解决方案12】:

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

                1. sudo apt-get install php7.0-mbstring,
                2. 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
                【解决方案13】:

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

                ;extension=php_curl.dll
                

                extension=php_curl.dll
                

                然后作曲家安装

                【讨论】:

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

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

                保存 composer.json 并运行 composer update

                你已经完成了!

                【讨论】:

                • 人们永远不应该使用 composer update 来安装依赖项。它应该使用作曲家安装。 Composer 更新将更新所有依赖项,这可能是灾难性的。
                【解决方案15】:

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

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

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

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

                【讨论】:

                • 问题是使用不稳定的开发版本。盲目地允许它们(即使更喜欢稳定)是无法维护的混乱的关键。
                • @Sven 答案直接解决了问题,即dev-master约束。它并没有说明松散的版本约束是好的——它们可能会导致一团糟,这是开发人员的良心。答案对标签没有固执己见的事实并没有造成错误。顺便说一句,我感谢您的反对。否决相邻的答案是非常合乎道德的。
                • 我同意这个答案是正确的,基于所询问的内容。它也对我有用。投了赞成票!
                猜你喜欢
                • 2017-10-04
                • 1970-01-01
                • 2019-09-28
                • 1970-01-01
                • 2014-08-27
                • 1970-01-01
                • 2022-11-13
                相关资源
                最近更新 更多