【问题标题】:Laravel 8 Your requirements could not be resolved to an installable set of packages when running composer require laravel/passportLaravel 8 运行 composer require laravel/passport 时,您的需求无法解析为一组可安装的软件包
【发布时间】:2021-02-28 21:30:59
【问题描述】:

这个问题有很多版本,但我没有找到任何处理这些特定包的版本。

我正在尝试将 laravel 护照版本 10 安装到我的 laravel 8 安装中, 运行composer require laravel/passport 时,我得到以下响应:

    Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - laravel/passport[v10.0.1, ..., 10.x-dev] require illuminate/auth ^8.2 -> found illuminate/auth[v8.2.0, ..., 8.x-dev] but it conflicts with another require.
    - laravel/passport v10.0.0 requires illuminate/auth ^8.0 -> found illuminate/auth[v8.0.0, ..., 8.x-dev] but it conflicts with another require.
    - Root composer.json requires laravel/passport ^10.0 -> satisfiable by laravel/passport[v10.0.0, v10.0.1, 10.x-dev].


Installation failed, reverting ./composer.json and ./composer.lock to their original content.

找到Illumination/auth ^8.0 -> 找到Illuminate/auth[v8.0.0, ..., 8.x-dev]

无论如何,这是我的 composer.json:

   {
    "name": "laravel/laravel",
    "type": "project",
    "description": "The Laravel Framework.",
    "keywords": [
        "framework",
        "laravel"
    ],
    "license": "MIT",
    "require": {
        "php": "^7.3|^8.0",
        "fideloper/proxy": "^4.4.1",
        "fruitcake/laravel-cors": "^2.0.3",
        "guzzlehttp/guzzle": "^7.0.1",
        "laravel/framework": "^9.0",
        "laravel/passport": "^10.0",
        "laravel/tinker": "^2.5|dev-develop",
        "paragonie/random_compat": "2.*"
    },
    "require-dev": {
        "fakerphp/faker": "^1.9.1",
        "mockery/mockery": "^1.4.2",
        "nunomaduro/collision": "^5.0",
        "phpunit/phpunit": "^9.3.3"
    },
    "config": {
        "optimize-autoloader": true,
        "preferred-install": "dist",
        "sort-packages": true
    },
    "extra": {
        "laravel": {
            "dont-discover": []
        }
    },
    "autoload": {
        "psr-4": {
            "App\\": "app/",
            "Database\\Factories\\": "database/factories/",
            "Database\\Seeders\\": "database/seeders/"
        }
    },
    "autoload-dev": {
        "psr-4": {
            "Tests\\": "tests/"
        }
    },
    "minimum-stability": "dev",
    "prefer-stable": true,
    "scripts": {
        "post-autoload-dump": [
            "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
            "@php artisan package:discover --ansi"
        ],
        "post-root-package-install": [
            "@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
        ],
        "post-create-project-cmd": [
            "@php artisan key:generate --ansi"
        ]
    }
}

编辑 1: 我尝试运行composer require --no-update laravel/passport,当我运行composer update 时出现以下错误(虽然它可能会提供额外信息):

Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - laravel/passport[v10.0.1, ..., 10.x-dev] require illuminate/support ^8.2 -> satisfiable by illuminate/support[v8.2.0, ..., 8.x-dev].
    - laravel/passport v10.0.0 requires illuminate/support ^8.0 -> satisfiable by illuminate/support[v8.0.0, ..., 8.x-dev].
    - Only one of these can be installed: illuminate/support[dev-master, v6.0.0, ..., 6.x-dev, v7.0.0, ..., 7.x-dev, v8.0.0, ..., 8.x-dev], laravel/framework[dev-master]. laravel/framework replaces illuminate/support and thus 
cannot coexist with it.
    - laravel/framework 9.x-dev is an alias of laravel/framework dev-master and thus requires it to be installed too.
    - Root composer.json requires laravel/framework ^9.0 -> satisfiable by laravel/framework[9.x-dev (alias of dev-master)].
    - Root composer.json requires laravel/passport ^10.0 -> satisfiable by laravel/passport[v10.0.0, v10.0.1, 10.x-dev].

编辑 2: 要进一步解释下面的答案,您必须删除项目中的 vendor 文件夹和 composer.json 文件,然后运行 ​​composer install 以降级到 laravel 8。 之后你可以运行composer require laravel/passport,它会正确安装

【问题讨论】:

  • "laravel/framework": "^9.0", ? 9?
  • 好问题,我还没有编辑composer.json,我不知道这是怎么回事,我把它改成8吗?它会破坏什么吗?编辑:我改变了,我得到了一个额外的错误,所以是的,它必须在开发版本上:Root composer.json requires laravel/framework ^8.0, found laravel/framework[v8.0.0, ..., 8.x-dev] but the package is fixed to 9.x-dev (lock file version) by a partial update and that version does not match. Make sure you list it as an argument for the update command.

标签: php laravel laravel-passport


【解决方案1】:

将你的 Laravel 版本从 9 降级到 8

   {
"name": "laravel/laravel",
"type": "project",
"description": "The Laravel Framework.",
"keywords": [
    "framework",
    "laravel"
],
"license": "MIT",
"require": {
    "php": "^7.3|^8.0",
    "fideloper/proxy": "^4.4.1",
    "fruitcake/laravel-cors": "^2.0.3",
    "guzzlehttp/guzzle": "^7.0.1",
    "laravel/framework": "^8.0",
    "laravel/passport": "^10.0",
    "laravel/tinker": "^2.5|dev-develop",
    "paragonie/random_compat": "2.*"
},
"require-dev": {
    "fakerphp/faker": "^1.9.1",
    "mockery/mockery": "^1.4.2",
    "nunomaduro/collision": "^5.0",
    "phpunit/phpunit": "^9.3.3"
},
"config": {
    "optimize-autoloader": true,
    "preferred-install": "dist",
    "sort-packages": true
},
"extra": {
    "laravel": {
        "dont-discover": []
    }
},
"autoload": {
    "psr-4": {
        "App\\": "app/",
        "Database\\Factories\\": "database/factories/",
        "Database\\Seeders\\": "database/seeders/"
    }
},
"autoload-dev": {
    "psr-4": {
        "Tests\\": "tests/"
    }
},
"minimum-stability": "dev",
"prefer-stable": true,
"scripts": {
    "post-autoload-dump": [
        "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
        "@php artisan package:discover --ansi"
    ],
    "post-root-package-install": [
        "@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
    ],
    "post-create-project-cmd": [
        "@php artisan key:generate --ansi"
    ]
}

}

【讨论】:

  • 我尝试通过将 composer.json 中的版本切换到 8.0 来降级,但我收到以下错误 Root composer.json requires laravel/framework ^8.0, found laravel/framework[v8.0.0, ..., 8.x-dev] but the package is fixed to 9.x-dev (lock file version) by a partial update and that version does not match. Make sure you list it as an argument for the update command. 在我的 composer.lock 中它说:"laravel/framework": "^8.0",
  • 要降级,您还必须删除您的供应商文件夹和您的 composer.lock 文件,然后运行 ​​composer install。
  • @javier1zq 谢谢,我自己也在为此苦苦挣扎。您对文件夹和锁定文件删除的评论是此答案的重要组成部分!
【解决方案2】:

我可以通过修改操作系统上的PHP PATH 来解决这个问题,当时我正在使用windowsWampServer

上面建议的更改可能会起作用,但是如果正在运行composer install 命令,那是因为应用程序已经存在并且正在下载其依赖项,因此更改上面建议的文件可能会导致应用程序运行出现问题. 我认为将 PATH 注释更改为正确的 PHP 版本会起作用,就我而言: C:\wamp64\bin\php\php7.3.21 工作。

Valew。

【讨论】:

    【解决方案3】:

    只做一件事

    删除 composer.lock 文件,然后安装所需的包

    它对我有用...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-20
      • 2015-06-20
      • 1970-01-01
      • 2021-07-24
      • 1970-01-01
      • 2014-04-11
      • 2016-02-24
      • 1970-01-01
      相关资源
      最近更新 更多