无法将Laravel从5.8升级至6版本的问题求助
Laravel 5.8 升级至 6.x 失败问题排查
升级背景
已顺利将Laravel从5.6依次升级至5.7、5.8版本,无重大问题,但升级至6.x版本时失败。
当前 composer.json 配置
{ "name": "laravel/laravel", "description": "The Laravel Framework.", "keywords": ["framework", "laravel"], "license": "MIT", "type": "project", "require": { "php": "^7.1.3", "arcanedev/log-viewer": "~4.7.0", "davejamesmiller/laravel-breadcrumbs": "5.x", "devmarketer/easynav": "^1.0", "dompdf/dompdf": "^0.8.2", "fideloper/proxy": "^4.0", "guzzlehttp/guzzle": "^6.3", "intervention/image": "^2.4", "itsgoingd/clockwork": "^5.0", "kylekatarnls/laravel-carbon-2": "^1.0.0", "laracasts/flash": "^3.0", "laravel/framework": "^6.0", "laravel/passport": "^7.0", "laravel/tinker": "^1.0", "league/flysystem-aws-s3-v3": "~1.0", "maatwebsite/excel": "^3.1", "mpdf/mpdf": "^7.1", "nesbot/carbon": "2.61.0 as 1.39.0", "phpoffice/phpspreadsheet": "^1.2", "pragmarx/google2fa-laravel": "^0.2.0", "pusher/pusher-php-server": "~3.0", "robbiep/cloudconvert-laravel": "2.*", "santigarcor/laratrust": "5.0.*", "sendgrid/sendgrid": "~7", "symfony/css-selector": "^4.1", "symfony/dom-crawler": "^4.1", "tymon/jwt-auth": "1.0.*", "unsplash/unsplash": "^2.4", "yajra/laravel-datatables": "^1.5" }, "require-dev": { "filp/whoops": "^2.0", "fzaninotto/faker": "^1.4", "mockery/mockery": "^1.0", "nunomaduro/collision": "^2.0", "phpunit/phpunit": "^7.0", "squizlabs/php_codesniffer": "^3.2" }, "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, "allow-plugins": { "kylekatarnls/update-helper": true } }, "minimum-stability": "dev", "prefer-stable": true }
升级时的错误信息
Problem 1 - Root composer.json requires laravel/framework ^6.0 -> satisfiable by laravel/framework[v6.0.0, ..., 6.x-dev]. - arcanedev/log-viewer[4.7.0, ..., v4.7.x-dev] require arcanedev/support ~4.5.0 -> satisfiable by arcanedev/support[4.5.0]. - arcanedev/support 4.5.0 requires illuminate/support ~5.8.0 -> satisfiable by illuminate/support[v5.8.0, ..., 5.8.x-dev]. - Conclusion: don't install illuminate/support v5.8.36 (conflict analysis result) - Root composer.json requires arcanedev/log-viewer ~4.7.0 -> satisfiable by arcanedev/log-viewer[4.7.0, ..., v4.7.x-dev].
问题根源
核心冲突来自 arcanedev/log-viewer 4.7.x 版本:
- 该版本依赖
arcanedev/support ~4.5.0 - 而
arcanedev/support 4.5.0强制要求illuminate/support ~5.8.0(Laravel 5.8的组件版本) - 但Laravel 6.x需要的是
illuminate/support 6.x版本,两者版本约束冲突,导致Composer无法解析依赖。
解决方案提示
- 升级 arcanedev/log-viewer 到兼容Laravel 6的版本:
修改composer.json中该包的版本约束,比如改为^5.0(该版本系列已适配Laravel 6),然后执行composer update arcanedev/log-viewer测试。 - 排查其他依赖的兼容性:
同步检查其他包是否也存在Laravel版本不兼容问题,比如:davejamesmiller/laravel-breadcrumbs 5.x:确认是否支持Laravel 6,若不支持则升级到对应版本santigarcor/laratrust 5.0.*:查看其版本文档是否适配Laravel 6
- 逐步更新依赖:
可以先单独更新冲突的包,再整体执行composer update,避免一次性更新所有包带来的连锁问题。
内容的提问来源于stack exchange,提问作者Marcello Pato
相关产品推荐
相关产品推荐

