ibrahim
ibrahim

Reputation: 11

Laravel 8.x to 9.x upgrade requirements issue

How can I fix?

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

  • illuminate/database[v6.0.0, ..., v6.19.1] require php ^7.2 -> your php version (8.1.2) does not satisfy that requirement.
  • illuminate/database[v7.0.0, ..., v7.28.4] require php ^7.2.5 -> your php version (8.1.2) does not satisfy that requirement.
  • illuminate/database[v8.0.0, ..., v8.11.2] require php ^7.3 -> your php version (8.1.2) does not satisfy that requirement.
  • Root composer.json requires spatie/laravel-permission ^4.2 -> satisfiable by spatie/laravel-permission[4.2.0, ..., v4.x-dev].
  • Conclusion: don't install laravel/framework v9.0.0-beta.2 (conflict analysis result)
  • Conclusion: don't install laravel/framework v9.0.0-beta.3 (conflict analysis result)
  • Conclusion: don't install laravel/framework v9.0.0-beta.4 (conflict analysis result)
  • Conclusion: don't install laravel/framework v9.0.0-beta.5 (conflict analysis result)
  • Conclusion: don't install laravel/framework v9.0.0 (conflict analysis result)
  • Conclusion: don't install laravel/framework v9.0.1 (conflict analysis result)
  • Conclusion: don't install laravel/framework v9.0.2 (conflict analysis result)
  • Conclusion: don't install laravel/framework v9.1.0 (conflict analysis result)
  • Conclusion: don't install laravel/framework v9.2.0 (conflict analysis result)
  • Conclusion: don't install laravel/framework v9.3.0 (conflict analysis result)
  • Conclusion: don't install laravel/framework v9.3.1 (conflict analysis result)
  • Conclusion: don't install laravel/framework v9.0.0-beta.1 (conflict analysis result)
  • spatie/laravel-permission[4.2.0, ..., v4.x-dev] require illuminate/database ^6.0|^7.0|^8.0 -> satisfiable by illuminate/database[v6.0.0, ..., 6.x-dev, v7. 0.0, ..., 7.x-dev, v8.0.0, ..., 8.x-dev].
  • Only one of these can be installed: illuminate/database[v6.0.0, ..., 6.x-dev, v7.0.0, ..., 7.x-dev, v8.0.0, ..., 8.x-dev], laravel/framework[v9.0.0-beta.1 , ..., 9.x-dev]. laravel/framework replaces illuminate/database and thus cannot coexist with it.
  • Root composer.json requires laravel/framework ^9.0 -> satisfiable by laravel/framework[v9.0.0-beta.1, ..., 9.x-dev].

Upvotes: 1

Views: 7940

Answers (1)

Vipertecpro
Vipertecpro

Reputation: 3274

Take backup of your old composer.json, just to refer for all the other packages that you are going to need.

Remove vendor folder and copy composer.json from below.

This is my fresh laravel 9 composer.json file

{
    "name": "laravel/laravel",
    "type": "project",
    "description": "The Laravel Framework.",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "require": {
        "php": "^8.0.2",
        "guzzlehttp/guzzle": "^7.2",
        "laravel/framework": "^9.2",
        "laravel/sanctum": "^2.14.1",
        "laravel/tinker": "^2.7",
        "spatie/laravel-permission": "^5.5"
    },
    "require-dev": {
        "fakerphp/faker": "^1.9.1",
        "laravel/sail": "^1.0.1",
        "mockery/mockery": "^1.4.4",
        "nunomaduro/collision": "^6.1",
        "phpunit/phpunit": "^9.5.10",
        "spatie/laravel-ignition": "^1.0"
    },
    "autoload": {
        "psr-4": {
            "App\\": "app/",
            "Database\\Factories\\": "database/factories/",
            "Database\\Seeders\\": "database/seeders/"
        }
    },
    "autoload-dev": {
        "psr-4": {
            "Tests\\": "tests/"
        }
    },
    "scripts": {
        "post-autoload-dump": [
            "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
            "@php artisan package:discover --ansi"
        ],
        "post-update-cmd": [
            "@php artisan vendor:publish --tag=laravel-assets --ansi --force"
        ],
        "post-root-package-install": [
            "@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
        ],
        "post-create-project-cmd": [
            "@php artisan key:generate --ansi"
        ]
    },
    "extra": {
        "laravel": {
            "dont-discover": []
        }
    },
    "config": {
        "optimize-autoloader": true,
        "preferred-install": "dist",
        "sort-packages": true
    },
    "minimum-stability": "dev",
    "prefer-stable": true
}

Then run composer update After that if you want your old packages back then install one by one like this

composer require spatie/laravel-permission

Update In case if anyone had version issue while upgrading please refer to the latest laravel composer.json

Upvotes: 4

Related Questions