如何从 laravel 5.2 升级到 5.4?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/44824360/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-14 16:14:14  来源:igfitidea点击:

How to Upgrade from laravel 5.2 to 5.4?

phplaravellaravel-5migration

提问by Rahul

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.

我想将 Laravel 更新到最新版本 5.4。
但是在laravel 迁移指南中没有给出直接迁移,所以首先我试图将它迁移到 laravel 5.3。
我的项目正在开发 5.2 laravel 版本并尝试升级它。

I have updated composer.jsonas guided into the documentation of laravel migration guide.
And run command composer updateon the command line.

我已经composer.json按照 laravel 迁移指南的文档中的指导进行了更新。
composer update在命令行上运行命令。

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.

更新依赖项(包括 require-dev) 您的要求无法解析为一组可安装的软件包。

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?

我需要在 composer.json 中进行哪些额外更改才能使更新生效?

** UPDATE:**

** 更新:**

This is composer.json

这是 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"
    }
}

采纳答案by Rahul

In the end I end up using advantage of linkas 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.

最后我最终使用了链接的优势,因为这些人整合了一切可能。只是我们这边的一些小改动,当他们升级最新版本的 laravel 时,他们也会在日志中提到这一点。它是付费的,但是为了节省时间而进行的一次性投资是值得的。

回答by Leonid Dashko

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

我从 Laravel 5.2 迁移到 5.6.3 以下是我的步骤:

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

首先,您需要更新提供者app/Providers/{EventServiceProvider, RouteServiceProvider}.php
他们的 boot() 方法不应该带参数:

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

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

其次,更新你的 composer.json。这是我的默认配置:

{
  "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 updateor php composer.phar update

然后运行composer updatephp composer.phar update

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

从原始存储库替换您的 App/Providers/RouteServiceProvider.php。

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

将您的路由从 app/routes/web.php 移动到 routes/web.php(最初,您可能还想从原始 Laravel 复制路由)

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

从文件夹 app/Http/Controllers/Auth 中的原始 Laravel 存储库中替换您的控制器进行身份验证

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

注释掉旧的 auth 路由并添加Auth::routes();到 web.php 路由文件中(更多相关信息)。

Add config/hashing.phpfrom original repository.

config/hashing.php从原始存储库添加。

Run php artisan config:cacheto reset the cache.

运行php artisan config:cache以重置缓存。

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

最后,更新您的数据库结构php artisan migrate --seed并运行应用程序php artisan serve

Original Laravel Repository

原始 Laravel 存储库

回答by AddWeb Solution Pvt Ltd

I think you need to try this:

我认为你需要试试这个:

You have to update first LaravelCollective html packageas well.

您还必须更新第一个 LaravelCollective html 包

In your composer.json, replace:

在您的composer.json,替换:

"laravelcollective/html": "5.2.*"

with:

和:

"laravelcollective/html": "5.4.*"

回答by Ruchi

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

您必须先更新 barryvdh/laravel-dompdf 包。

In your composer.json change:

在您的 composer.json 更改:

first change

第一次改变

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

"laravel/framework": "5.3.*"到上一个

and then change

然后改变

from

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

to

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

and then hit composer updatecommand

然后点击composer update命令

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

然后改变"laravel/framework": "5.3.*"并再次击中

`composer update`

command

命令