php - 如何从 Laravel 5.2 升级到 5.4?

标签 php laravel laravel-5 migration

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

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

我收到以下错误。

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

更新依赖(包括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].

我需要在 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"
    }
}

最佳答案

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

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

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

其次,更新您的 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
}

然后运行 ​​composer updatephp composer.phar update

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

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

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

在 web.php 路由文件 (more about this) 中注释掉您的旧身份验证路由并添加 Auth::routes();

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

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

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

Original Laravel Repository

关于php - 如何从 Laravel 5.2 升级到 5.4?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44824360/

相关文章:

javascript - 在php中获取特定数组字段长度

php - 如何处理购物车表中的更新查询

php - 获取所有没有关系的Eloquent模型

php - 如何在 Laravel 上的 app/Mail VeryfyMail.php 上生成随机 token ?

testing - 如何确定 google invisible reCapthca 是否保护我的网站免受机器人攻击?

php - 激活 PHP 函数的提交按钮

html - Laravel 中的 Ajax 删除

php - Laravel Passport 路由 [登录名] 未定义

php - 从 Laravel 中具有一对多关系的 4 个表中检索值

PHP - MySQLi 插入不适用于用户注册