4

I want to update Laravel to the latest version 5.4.
But direct migration is not given in laravel migration guide, so first I am trying to migrate it to laravel 5.3.
My project is working on a 5.2 laravel version and trying to upgrade it.

I have updated composer.json as guided into the documentation of laravel migration guide.
And run command composer update on the command line.

I am getting the following error.

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

  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
    - Conclusion: don't install laravel/framework v5.3.31
    - Conclusion: don't install laravel/framework v5.3.30
    - Conclusion: don't install laravel/framework v5.3.29
    - Conclusion: don't install laravel/framework v5.3.28
    - Conclusion: don't install laravel/framework v5.3.27
    - Conclusion: don't install laravel/framework v5.3.26
    - Conclusion: don't install laravel/framework v5.3.25
    - Conclusion: don't install laravel/framework v5.3.24
    - Conclusion: don't install laravel/framework v5.3.23
    - Conclusion: don't install laravel/framework v5.3.22
    - Conclusion: don't install laravel/framework v5.3.21
    - Conclusion: don't install laravel/framework v5.3.20
    - Conclusion: don't install laravel/framework v5.3.19
    - Conclusion: don't install laravel/framework v5.3.18
    - Conclusion: don't install laravel/framework v5.3.17
    - Conclusion: don't install laravel/framework v5.3.16
    - Conclusion: don't install laravel/framework v5.3.15
    - Conclusion: don't install laravel/framework v5.3.14
    - Conclusion: don't install laravel/framework v5.3.13
    - Conclusion: don't install laravel/framework v5.3.12
    - Conclusion: don't install laravel/framework v5.3.11
    - Conclusion: don't install laravel/framework v5.3.10
    - Conclusion: don't install laravel/framework v5.3.9
    - Conclusion: don't install laravel/framework v5.3.8
    - Conclusion: don't install laravel/framework v5.3.7
    - Conclusion: don't install laravel/framework v5.3.6
    - Conclusion: don't install laravel/framework v5.3.5
    - Conclusion: don't install laravel/framework v5.3.4
    - Conclusion: don't install laravel/framework v5.3.3
    - Conclusion: don't install laravel/framework v5.3.2
    - Conclusion: don't install laravel/framework v5.3.1
    - laravelcollective/html v5.4 requires illuminate/view 5.4.* -> satisfiable by illuminate/view[v5.4.0, v5.4.13, v5.4.17, v5.4.19, v5.4.27, v5.4.9].
    - laravelcollective/html v5.4.1 requires illuminate/view 5.4.* -> satisfiable by illuminate/view[v5.4.0, v5.4.13, v5.4.17, v5.4.19, v5.4.27, v5.4.9].
    - laravelcollective/html v5.4.2 requires illuminate/view 5.4.* -> satisfiable by illuminate/view[v5.4.0, v5.4.13, v5.4.17, v5.4.19, v5.4.27, v5.4.9].
    - laravelcollective/html v5.4.3 requires illuminate/view 5.4.* -> satisfiable by illuminate/view[v5.4.0, v5.4.13, v5.4.17, v5.4.19, v5.4.27, v5.4.9].
    - laravelcollective/html v5.4.4 requires illuminate/view 5.4.* -> satisfiable by illuminate/view[v5.4.0, v5.4.13, v5.4.17, v5.4.19, v5.4.27, v5.4.9].
    - laravelcollective/html v5.4.5 requires illuminate/view 5.4.* -> satisfiable by illuminate/view[v5.4.0, v5.4.13, v5.4.17, v5.4.19, v5.4.27, v5.4.9].
    - laravelcollective/html v5.4.6 requires illuminate/view 5.4.* -> satisfiable by illuminate/view[v5.4.0, v5.4.13, v5.4.17, v5.4.19, v5.4.27, v5.4.9].
    - laravelcollective/html v5.4.7 requires illuminate/view 5.4.* -> satisfiable by illuminate/view[v5.4.0, v5.4.13, v5.4.17, v5.4.19, v5.4.27, v5.4.9].
    - laravelcollective/html v5.4.8 requires illuminate/view 5.4.* -> satisfiable by illuminate/view[v5.4.0, v5.4.13, v5.4.17, v5.4.19, v5.4.27, v5.4.9].
    - don't install illuminate/view v5.4.0|don't install laravel/framework v5.3.0
    - don't install illuminate/view v5.4.13|don't install laravel/framework v5.3.0
    - don't install illuminate/view v5.4.17|don't install laravel/framework v5.3.0
    - don't install illuminate/view v5.4.19|don't install laravel/framework v5.3.0
    - don't install illuminate/view v5.4.27|don't install laravel/framework v5.3.0
    - don't install illuminate/view v5.4.9|don't install laravel/framework v5.3.0
    - Installation request for laravel/framework 5.3.* -> satisfiable by laravel/framework[v5.3.0, v5.3.1, v5.3.10, v5.3.11, v5.3.12, v5.3.13, v5.3.14, v5.3.15, v5.3.16,
v5.3.17, v5.3.18, v5.3.19, v5.3.2, v5.3.20, v5.3.21, v5.3.22, v5.3.23, v5.3.24, v5.3.25, v5.3.26, v5.3.27, v5.3.28, v5.3.29, v5.3.3, v5.3.30, v5.3.31, v5.3.4, v5.3.5, v5.
3.6, v5.3.7, v5.3.8, v5.3.9].
    - Installation request for laravelcollective/html ~5.4 -> satisfiable by laravelcollective/html[v5.4, v5.4.1, v5.4.2, v5.4.3, v5.4.4, v5.4.5, v5.4.6, v5.4.7, v5.4.8].

What extra changes do I need to make in composer.json to make the update work?

** UPDATE:**

This is composer.json

{
    "name": "laravel/laravel",
    "description": "The Laravel Framework.",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "type": "project",
    "require": {
        "php": ">=5.5.9",
        "laravel/framework": "5.3.*",
        "twbs/bootstrap": "dev-master",
        "laravelcollective/html": "~5.4",
        "kepex/laravel-crud-generator": "^0.1.4",
        "watson/bootstrap-form": "^1.0",
        "doctrine/dbal": "^2.5",
        "intervention/image": "dev-master",
        "danvuquoc/laravel-kraken": "1.*",
        "barryvdh/laravel-dompdf": "0.8.*",
        "barryvdh/laravel-debugbar": "^2.2",
        "barryvdh/laravel-snappy": "^0.3.0",
        "danielboendergaard/phantom-pdf": "^1.2",
        "h4cc/wkhtmltopdf-i386": "0.12.x",
        "h4cc/wkhtmltoimage-i386": "0.12.x",
        "h4cc/wkhtmltopdf-amd64": "0.12.x",
        "knplabs/knp-snappy": "^0.4.3",
        "wemersonjanuario/wkhtmltopdf-windows": "0.12.2.3",
        "tymon/jwt-auth": "0.5.*",
        "zizaco/entrust": "dev-laravel-5",
        "eluceo/ical": "^0.11.0",
        "jurosh/pdf-merge": "dev-master",
        "torann/geoip": "^1.0",
        "maatwebsite/excel": "~2.1.0",
        "roumen/sitemap": "dev-master",
        "guzzlehttp/guzzle": "^6.2",
        "rackspace/php-opencloud": "dev-master",
         "ellisthedev/laravel-5-robots": "~0.1.0",
        "mpdf/mpdf": "^6.1",
        "matthiasmullie/minify": "^1.3",
        "lullabot/amp": "^1.0.0"
    },
    "require-dev": {
        "fzaninotto/faker": "~1.4",
        "mockery/mockery": "0.9.*",
        "phpunit/phpunit": "~4.0",
        "symfony/css-selector": "2.8.*|3.0.*|3.1.*",
        "symfony/dom-crawler": "2.8.*|3.0.*|3.1.*"
    },
    "autoload": {
        "classmap": ["database"],
        "files": ["app/Http/helpers.php"],
        "psr-4": {
            "App\\": "app/"
        }
    },
    "autoload-dev": {
        "classmap": ["tests/TestCase.php"]
    },
    "scripts": {
        "post-root-package-install": ["php -r \"copy('.env.example', '.env');\""],
        "post-create-project-cmd": ["php artisan key:generate"],
        "post-install-cmd": ["Illuminate\\Foundation\\ComposerScripts::postInstall", "php artisan optimize"],
        "post-update-cmd": ["Illuminate\\Foundation\\ComposerScripts::postUpdate", "php artisan optimize"]
    },
    "config": {
        "preferred-install": "dist"
    }
}
Rahul
  • 18,271
  • 7
  • 41
  • 60

4 Answers4

4

I migrated from Laravel 5.2 to 5.6.3 Here are my steps:

Firstly, you need to update providers app/Providers/{EventServiceProvider, RouteServiceProvider}.php.
Their boot() methods shouldn't take arguments:

     ...
-    public function boot(DispatcherContract $events)
+    public function boot()
     {
-        parent::boot($events);
+        parent::boot();
     }
     ...

Secondly, update your composer.json. Here is my default configuration:

{
  "name": "laravel/laravel",
  "description": "The Laravel Framework.",
  "keywords": [
    "framework",
    "laravel"
  ],
  "license": "MIT",
  "type": "project",
  "require": {
    "php": ">=7.1.3",
    "fideloper/proxy": "~4.0",
    "laravel/framework": "5.6.*",
    "laravel/tinker": "~1.0",
    "laravelcollective/html": "^5.5.0"
  },
  "require-dev": {
    "barryvdh/laravel-debugbar": "^3.1",
    "filp/whoops": "~2.0",
    "fzaninotto/faker": "~1.4",
    "mockery/mockery": "~1.0",
    "nunomaduro/collision": "~2.0",
    "phpunit/phpunit": "~7.0",
    "symfony/thanks": "^1.0",
    "doctrine/dbal": "^2.5"
  },
  "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
}

Then run composer update or php composer.phar update

Replace your App/Providers/RouteServiceProvider.php from original repository.

Move your routes from app/routes/web.php to routes/web.php (initially, you may also want to copy the routes from original Laravel)

Replace your controllers for Authentication from original Laravel repository in folder app/Http/Controllers/Auth

Comment out your old auth routes and add Auth::routes(); in web.php routes file (more about this).

Add config/hashing.php from original repository.

Run php artisan config:cache to reset the cache.

Finally, update your DB structure php artisan migrate --seed and run the app php artisan serve

Original Laravel Repository

Leonid Dashko
  • 3,657
  • 1
  • 18
  • 26
  • you we don't need to do more to migrate from 5.2 to 5.6 today ? I'm looking for a way to do that ? I'm reading update from 5.2 to 5.3 and there are a lot of steps contrary to your method ? thank you – faty fatoumata May 10 '18 at 12:22
  • Could you provide a link to the article? In my case, I successfully migrated by following the steps described above. – Leonid Dashko May 10 '18 at 19:37
0

I think you need to try this:

You have to update first LaravelCollective html package as well.

In your composer.json, replace:

"laravelcollective/html": "5.2.*"

with:

"laravelcollective/html": "5.4.*"
linktoahref
  • 7,812
  • 3
  • 29
  • 51
AddWeb Solution Pvt Ltd
  • 21,025
  • 5
  • 26
  • 57
  • No luck mate same error is coming. But one thing I noticed, error lines has been reduced – Rahul Jun 29 '17 at 12:03
0

You have to update first barryvdh/laravel-dompdf package.

In your composer.json change:

first change

"laravel/framework": "5.3.*" to the previous one

and then change

from

"barryvdh/laravel-dompdf": "^0.6.1",

to

"barryvdh/laravel-dompdf": "^0.8.0",

and then hit composer update command

and then change "laravel/framework": "5.3.*" and again hit

`composer update`

command

Ruchita Sheth
  • 840
  • 9
  • 27
  • Do one thing first change your "laravel/framework": "5.3.*" to old one and then hit composer update command. so it will update "barryvdh/laravel-dompdf" package first without any error and then change "laravel/framework": "5.3.*" – Ruchita Sheth Jun 29 '17 at 12:12
  • Actually I want to update 5.2 to 5.4 but direction migration not given in guide. So I am first trying to migrate from 5.2 to 5.3 and then 5.3 to 5.4. If first one works – Rahul Jun 29 '17 at 12:36
  • let just remove laravelcollective/html": "~5.4", "barryvdh/laravel-dompdf": "^0.8.0", these two lines and then hit composer update. – Ruchita Sheth Jun 29 '17 at 12:38
  • It looked like it works but, at last it throw [ErrorException] Declaration of App\Providers\EventServiceProvider::boot() should be compatible with Illuminate\Foundation\Support\Providers\EventServiceProvider::boot() – Rahul Jun 29 '17 at 12:43
  • https://stackoverflow.com/questions/40935130/i-used-composer-to-upgrade-to-laravel-5-3-which-broke-it getting? Check out the upgrade guide – Ruchita Sheth Jun 29 '17 at 12:50
  • You may remove the arguments from the boot method on the EventServiceProvider, RouteServiceProvider, and AuthServiceProvider – Ruchita Sheth Jun 29 '17 at 12:56
  • Let us [continue this discussion in chat](http://chat.stackoverflow.com/rooms/148011/discussion-between-rahul-meshram-and-sr). – Rahul Jun 30 '17 at 04:43
0

In the end I end up using advantage of link as these people integrated everything possible. Just minor changes from our side, that too they will mention in the log when they upgrade latest version of laravel. Its paid thing, but one time investment to save time worth it.

Rahul
  • 18,271
  • 7
  • 41
  • 60