【问题标题】:Laravel can't upgrade from 5.7 to 7.0, composer compatibility failuresLaravel 无法从 5.7 升级到 7.0,composer 兼容性失败
【发布时间】:2020-12-25 05:44:58
【问题描述】:

我正在尝试将 laravel 从 5.7 更新到 7,但无论我尝试更新什么包,我的作曲家都会失败。

我也尝试从我的项目和 composer-lock.json 中删除供应商文件,但也没有成功。

如何将我当前的 laravel 应用从 5.7 升级到 7

命令行故障


COMPOSER_MEMORY_LIMIT=-1 composer update --with-dependencies  

Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - barryvdh/laravel-cors v0.11.2 requires illuminate/support 5.5.x|5.6.x|5.7.x -> satisfiable by laravel/framework[v5.7.28, 5.5.x-dev, 5.6.x-dev, 5.7.x-dev], illuminate/support[5.5.x-dev, 5.6.x-dev, 5.7.17, 5.7.18, 5.7.19, 5.7.x-dev, v5.5.0, v5.5.16, v5.5.17, v5.5.2, v5.5.28, v5.5.33, v5.5.34, v5.5.35, v5.5.36, v5.5.37, v5.5.39, v5.5.40, v5.5.41, v5.5.43, v5.5.44, v5.6.0, v5.6.1, v5.6.10, v5.6.11, v5.6.12, v5.6.13, v5.6.14, v5.6.15, v5.6.16, v5.6.17, v5.6.19, v5.6.2, v5.6.20, v5.6.21, v5.6.22, v5.6.23, v5.6.24, v5.6.25, v5.6.26, v5.6.27, v5.6.28, v5.6.29, v5.6.3, v5.6.30, v5.6.31, v5.6.32, v5.6.33, v5.6.34, v5.6.35, v5.6.36, v5.6.37, v5.6.38, v5.6.39, v5.6.4, v5.6.5, v5.6.6, v5.6.7, v5.6.8, v5.6.9, v5.7.0, v5.7.1, v5.7.10, v5.7.11, v5.7.15, v5.7.2, v5.7.20, v5.7.21, v5.7.22, v5.7.23, v5.7.26, v5.7.27, v5.7.28, v5.7.3, v5.7.4, v5.7.5, v5.7.6, v5.7.7, v5.7.8, v5.7.9].
    - illuminate/support v5.7.9 requires nesbot/carbon ^1.26.3 -> satisfiable by nesbot/carbon[1.26.3, 1.26.4, 1.26.5, 1.26.6, 1.27.0, 1.28.0, 1.29.0, 1.29.1, 1.29.2, 1.30.0, 1.31.0, 1.31.1, 1.32.0, 1.33.0, 1.34.0, 1.34.1, 1.34.2, 1.34.3, 1.34.4, 1.35.0, 1.35.1, 1.36.0, 1.36.1, 1.36.2, 1.37.0, 1.37.1, 1.38.0, 1.38.1, 1.38.2, 1.38.3, 1.38.4, 1.39.0, 1.39.1] but these conflict with your requirements or minimum-stability.

composer.json

{
    "name": "laravel/laravel",
    "description": "The Laravel Framework.",
    "keywords": [
        "framework",
        "laravel"
    ],
    "license": "MIT",
    "type": "project",
    "require": {
        "php": "^7.4.6",
        "alymosul/laravel-exponent-push-notifications": "^2.1",
        "barryvdh/laravel-cors": "^0.11.2",
        "beyondcode/laravel-websockets": "^1.1",
        "facade/ignition": "^2.0",
        "fideloper/proxy": "^4.0",
        "guzzlehttp/guzzle": "^6.3",
        "guzzlehttp/psr7": "1.5",
        "illuminate/config": "^7.0",
        "illuminate/validation": "^7.27",
        "laravel/framework": "^7.24",
        "laravel/passport": "^7.5",
        "laravel/tinker": "^2.0",
        "laravel/ui": "^2.2",
        "mollie/laravel-mollie": "2.0",
        "nesbot/carbon": "^2.39.1",
        "pusher/pusher-php-server": "^4.1",
        "tymon/jwt-auth": "1.0.*"
    },
    "require-dev": {
        "beyondcode/laravel-dump-server": "^1.0",
        "filp/whoops": "^2.0",
        "fzaninotto/faker": "^1.4",
        "mockery/mockery": "^1.0",
        "nunomaduro/collision": "^4.1",
        "phpunit/phpunit": "^8.5",
        "sven/artisan-view": "^3.1"
    },
    "autoload": {
        "classmap": [
            "database/seeds",
            "database/factories"
        ],
        "psr-4": {
            "App\\": "app/"
        }
    },
    "autoload-dev": {
        "psr-4": {
            "Tests\\": "tests/"
        }
    },
    "extra": {
        "laravel": {
            "dont-discover": []
        }
    },
    "scripts": {
        "post-root-package-install": [
            "@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
        ],
        "post-create-project-cmd": [
            "@php artisan key:generate"
        ],
        "post-autoload-dump": [
            "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
            "@php artisan package:discover"
        ]
    },
    "config": {
        "preferred-install": "dist",
        "sort-packages": true,
        "optimize-autoloader": true
    },
    "minimum-stability": "dev",
    "prefer-stable": true
}

【问题讨论】:

  • 不要直接从 5.7 升级到 7.. 明智地先尝试从 5.7 升级到 6 然后升级到 7.......然后你很容易找到问题......跨度>
  • 很可能你使用了多个具有特定 Laravel 兼容性要求的包。例如,在您发布的错误中,barryvdh/laravel-cors 需要 Laravel 5.x 或 6.x,而不是 7。
  • @AkenRoberts 嗯,所以我应该删除那些包?我想最好的确实是慢慢升级?
  • barryvdh/laravel-cors 以上版本 1.0.1 支持 Laravel 7,您需要升级您的依赖项并(最重要的是)更新您的代码以使用新版本,因为它们不向后兼容
  • 有什么方法可以知道哪些软件包兼容或者我还需要更新哪些软件包?

标签: laravel composer-php upgrade laravel-7


【解决方案1】:

在您的 composer.json 中,您有 "laravel/framework": "^7.24"。

要解决您需要添加的问题 2 : 照亮/支持 内斯博特/碳

这就是作曲家的意思。

【讨论】:

  • 不,不是说,是说barryvdh/laravel-cors v0.11.2不能用Laravel 7安装,也就是说他需要使用兼容版本的barryvdh/laravel-cors使用 Laravel 7
  • 啊,我明白了,你使用的是旧版本的 laravel-cors
  • 作曲家删除 barryvdh/laravel-cors 作曲家需要 barryvdh/laravel-cors
  • 试试这个或简单地编辑你的 composer.json 并放置与 laravel 7 兼容的最后一个版本,你可以从 packagist 获得最新版本
  • 请在您的答案中添加一些解释,以便其他人可以从中学习。为什么现在需要这两个包中的任何一个?
猜你喜欢
  • 1970-01-01
  • 2019-02-06
  • 1970-01-01
  • 1970-01-01
  • 2020-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-08
相关资源
最近更新 更多