安装 sanctum 时 Laravel Composer 错误:与合同冲突

Posted

技术标签:

【中文标题】安装 sanctum 时 Laravel Composer 错误:与合同冲突【英文标题】:Laravel Composer error while install sanctum: conflict with contracts 【发布时间】:2021-07-06 20:39:45 【问题描述】:

我在 composer 安装 laravel sanctum 时遇到这个错误

您的要求无法解决为一组可安装的软件包。 问题 1 - laravel/sanctum[v2.9.0, ..., 2.x-dev] 需要照明/合同 ^6.9|^7.0|^8.0 -> 找到照明/合同[v6.10.0, ..., 6.x-开发,v7.0.0,...,7.x-dev,v8.0.0,...,8.x-dev] 但这些没有加载,可能是因为它与另一个需求冲突。 - 根 composer.json 需要 laravel/sanctum ^2.9 -> 可由 laravel/sanctum[v2.9.0, ..., 2.x-dev] 满足。

我尝试通过

安装 laravel 合约
composer require illuminate/contracts

但得到这个错误

您的需求无法解决为一组可安装的软件包。

问题 1 - 根 composer.json 需要Illumination/contracts ^8.36,找到了Illumination/contracts[v8.36.0, v8.36.1, v8.36.2, 8.x-dev] 但这些没有加载,可能是因为它与 另一个要求。

作曲家.json


"name": "laravel/laravel",
"type": "project",
"description": "The Laravel Framework.",
"keywords": [
    "framework",
    "laravel"
],
"license": "MIT",
"require": 
    "php": "^7.1.3",
    "darkaonline/l5-swagger": "5.8.*",
    "fideloper/proxy": "^4.0",
    "fruitcake/laravel-cors": "^2.0",
    "iatstuti/laravel-cascade-soft-deletes": "1.0.*",
    "laravel/framework": "5.8.*",
    "laravel/tinker": "^1.0",
    "laravelcollective/html": "^5.2.0",
    "morilog/jalali": "3.*",
    "niklasravnsborg/laravel-pdf": "^3.1",
    "nwidart/laravel-modules": "^5.1",
    "predis/predis": "^1.1",
    "shetabit/payment": "^2.1",
    "ext-json": "*"
,
"require-dev": 
    "beyondcode/laravel-dump-server": "^1.0",
    "filp/whoops": "^2.0",
    "fzaninotto/faker": "^1.4",
    "mockery/mockery": "^1.0",
    "nunomaduro/collision": "^3.0",
    "phpunit/phpunit": "^7.5"
,
"config": 
    "optimize-autoloader": true,
    "preferred-install": "dist",
    "sort-packages": true
,
"extra": 
    "laravel": 
    "dont-discover": []
    
,
"autoload": 
    "psr-4": 
    "App\\": "app/",
    "Modules\\": "Modules/"
    ,
    "classmap": [
    "database/seeds",
    "database/factories"
    ]
,
"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 文件。是否还有其他错误(问题)。 请分享更多细节。 composer why-not illuminate/contracts 8.36.2 打印什么? @NicoHaase 我添加了 composer.json 【参考方案1】:

laravel/framework 固定在 v5.8 上,laravel/sanctum 不兼容。它至少需要 Laravel v6

【讨论】:

【参考方案2】:

你使用的是不支持laravel/sanctum的laravel版本 "laravel/framework": "5.8.*"

按照指南enter link description here 尝试将您的项目至少升级到laravel/framework": "7.0.*

然后运行$composer update

【讨论】:

请不要重复已有的答案,除非你想添加新的东西【参考方案3】:

您需要兼容版本的 'illuminate/contracts' 并且显然这个包存在于您的项目中。 检查 'composer.json' 文件并修复 'illuminate/contracts' 适合 'laravel/sanctum' 和 laravel 版本。

【讨论】:

请分享更多细节 - 究竟应该做什么?正如第二条错误消息所说,illuminate/contracts 无法安装

以上是关于安装 sanctum 时 Laravel Composer 错误:与合同冲突的主要内容,如果未能解决你的问题,请参考以下文章

Sanctum Laravel 8 用于 API 身份验证的问题(不会在注销时删除令牌)

使用 nuxtjs 登录 laravel sanctum 后出现 401(未验证)错误

当页面更新时,数据被删除 - vue 和 laravel sanctum

Laravel sanctum 获得合适的用户

Laravel Sanctum + Nuxt JS 我无法通过 CORS

如何使用 CSRF 令牌测试 Laravel / Sanctum 端点