如何从 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
How to Upgrade from laravel 5.2 to 5.4?
提问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.json
as guided into the documentation of laravel migration guide.
And run command composer update
on 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 update
or php composer.phar update
然后运行composer update
或php 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.php
from original repository.
config/hashing.php
从原始存储库添加。
Run php artisan config:cache
to reset the cache.
运行php artisan config:cache
以重置缓存。
Finally, update your DB structure php artisan migrate --seed
and run the app php artisan serve
最后,更新您的数据库结构php artisan migrate --seed
并运行应用程序php artisan serve
回答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 update
command
然后点击composer update
命令
and then change "laravel/framework": "5.3.*"
and again hit
然后改变"laravel/framework": "5.3.*"
并再次击中
`composer update`
command
命令