首页 文章

如何从laravel 5.2升级到5.4?

提问于
浏览
3

我想将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中进行哪些额外的更改才能使更新生效?

UPDATE :

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

4 回答

  • 3

    我从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

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

    Move your routes from app/routes/web.php to routes/web.php (最初,您可能还想复制原始Laravel的路线)

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

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

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

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

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

    Original Laravel Repository

  • 0

    你必须更新第一个barryvdh / laravel-dompdf包 .

    在你的composer.json中改变:

    第一次改变

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

    然后改变

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

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

    然后点击 composer update 命令

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

    `composer update`
    

    命令

  • 0

    我想你需要试试这个:

    您还必须更新第一个LaravelCollective html package .

    在你的 composer.json 中,替换:

    "laravelcollective/html": "5.2.*"
    

    有:

    "laravelcollective/html": "5.4.*"
    
  • 0

    最后,我最终利用link的优势,因为这些人整合了所有可能的东西 . 只是我们方面的细微变化,他们也会在升级最新版本的laravel时在日志中提及 . 它有偿的东西,但一次投资,以节省时间是值得的 .

相关问题