【发布时间】:2021-11-01 14:30:47
【问题描述】:
我正在将 Laravel 从 6.18 更新到 8。通常我只需更改 composer.json 中的版本并运行 composer update。
有一堆additional changes for 6.x to 7,所以我先尝试这样做(因为我使用了在 7 中更改但在 8.x 升级文档中未提及的 auth 脚手架)。
我相应地更改了 composer.json(也删除了一些过时的其他内容)并运行 composer update,但这失败了(直接更改为 8 也失败了)。使用 composer update -w 也不起作用。
{
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"license": "MIT",
"type": "project",
"require": {
"php": "^7.2.2",
"ajthinking/tinx": "^2.1",
"barryvdh/laravel-debugbar": "^3.2",
"davejamesmiller/laravel-breadcrumbs": "^5.2",
"doctrine/dbal": "^2.10",
"dompdf/dompdf": "^0.8.5",
"facade/ignition": "^1.16",
"fico7489/laravel-pivot": "^3.0",
"fideloper/proxy": "^4.0",
"guzzlehttp/guzzle": "^6.5",
"guzzlehttp/psr7": "^1.6",
"jrean/laravel-user-verification": "^8.0",
"kriswallsmith/buzz": "^1.1",
"laravel/framework": "6.x",
"laravel/helpers": "^1.1",
"laravel/tinker": "^1.0",
"laravelcollective/html": "^6.0",
"maatwebsite/excel": "^3.1",
"mailgun/mailgun-php": "^3.0",
"nunomaduro/phpinsights": "^1.11",
"nyholm/psr7": "^1.2",
"php-http/guzzle6-adapter": "^2.0",
"php-http/message": "^1.8",
"predis/predis": "^1.1",
"simplesoftwareio/simple-qrcode": "~2"
},
"require-dev": {
"filp/whoops": "^2.0",
"fzaninotto/faker": "^1.4",
"mockery/mockery": "^1.0",
"nunomaduro/collision": "^2.0",
"phpunit/phpunit": "^7.0"
},
"autoload": {
"classmap": [
"database/seeds",
"database/factories"
],
"files": [
"app/Http/helpers.php"
],
"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
}
到
{
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"license": "MIT",
"type": "project",
"require": {
"php": "^7.2.2",
"barryvdh/laravel-debugbar": "^3.2",
"davejamesmiller/laravel-breadcrumbs": "^5.2",
"doctrine/dbal": "^2.10",
"dompdf/dompdf": "^0.8.5",
"facade/ignition": "^2.0",
"fico7489/laravel-pivot": "^3.0",
"fideloper/proxy": "^4.0",
"guzzlehttp/guzzle": "^6.5",
"guzzlehttp/psr7": "^1.6",
"kriswallsmith/buzz": "^1.1",
"laravel/framework": "7.x",
"laravel/helpers": "^1.1",
"laravel/tinker": "^2.0",
"laravelcollective/html": "^6.0",
"maatwebsite/excel": "^3.1",
"mailgun/mailgun-php": "^3.0",
"nunomaduro/phpinsights": "^1.11",
"nyholm/psr7": "^1.2",
"php-http/guzzle6-adapter": "^2.0",
"php-http/message": "^1.8",
"predis/predis": "^1.1",
"simplesoftwareio/simple-qrcode": "~2"
},
"require-dev": {
"filp/whoops": "^2.0",
"fzaninotto/faker": "^1.4",
"mockery/mockery": "^1.0",
"nunomaduro/collision": "^4.1",
"phpunit/phpunit": "^8.5"
},
"autoload": {
"classmap": [
"database/seeds",
"database/factories"
],
"files": [
"app/Http/helpers.php"
],
"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
}
但这失败了(Laravel 没有更新)
Loading composer repositories with package information
Updating dependencies
Your requirements could not be resolved to an installable set of packages.
Problem 1
- Conclusion: don't install one of phploc/phploc[5.0.0], symfony/console[v5.0.0-BETA1] | install one of symfony/console[v4.1.12, ..., v4.4.30] (conflict analysis result)
- Conclusion: don't install facade/ignition 2.10.0 (conflict analysis result)
- Conclusion: don't install symfony/console[v5.3.0-BETA1] | install one of symfony/console[v4.4.3, ..., v4.4.17] (conflict analysis result)
- Conclusion: don't install symfony/console v4.4.3 (conflict analysis result)
- Conclusion: don't install symfony/console v4.4.4 (conflict analysis result)
- Conclusion: don't install symfony/console[v5.0.0-BETA1] | install one of symfony/console[v4.4.5, ..., v4.4.17] (conflict analysis result)
- Conclusion: don't install symfony/console[5.4.x-dev] | install one of symfony/console[v4.4.5, ..., v4.4.17] (conflict analysis result)
- Conclusion: don't install symfony/console[5.3.x-dev] | install one of symfony/console[v4.4.5, ..., v4.4.17] (conflict analysis result)
- Conclusion: don't install symfony/console[5.1.x-dev] | install one of symfony/console[v4.4.5, ..., v4.4.17] (conflict analysis result)
- Conclusion: don't install symfony/console[5.0.x-dev] | install one of symfony/console[v4.4.5, ..., v4.4.17] (conflict analysis result)
- Conclusion: don't install symfony/console v4.4.5 (conflict analysis result)
- Conclusion: don't install symfony/console[v5.3.0-BETA2] | install one of symfony/console[v4.4.6, ..., v4.4.17] (conflict analysis result)
- Conclusion: don't install symfony/console[v5.2.0-BETA3] | install one of symfony/console[v4.4.6, ..., v4.4.17] (conflict analysis result)
- Conclusion: don't install symfony/console[v5.2.0-BETA2] | install one of symfony/console[v4.4.6, ..., v4.4.17] (conflict analysis result)
- Conclusion: don't install symfony/console[v5.2.0-BETA1] | install one of symfony/console[v4.4.6, ..., v4.4.17] (conflict analysis result)
- Conclusion: don't install symfony/console[v5.1.0-BETA1] | install one of symfony/console[v4.4.6, ..., v4.4.17] (conflict analysis result)
- Conclusion: don't install symfony/console[v5.0.0-BETA2] | install one of symfony/console[v4.4.6, ..., v4.4.17] (conflict analysis result)
- Conclusion: don't install symfony/console[v4.4.6] | install one of laravel/framework[v7.30.2, v7.30.3], symfony/console[v5.0.0-RC1, ..., v5.3.0-RC1] (conflict analysis result)
- Conclusion: don't install laravel/framework v7.30.2 (conflict analysis result)
- Conclusion: don't install facade/ignition 2.10.1 (conflict analysis result)
- Conclusion: don't install symfony/console[v5.1.0-RC1] | install one of symfony/console[v4.4.7, ..., v4.4.15] (conflict analysis result)
- Conclusion: don't install symfony/console v4.4.7 (conflict analysis result)
- Conclusion: don't install symfony/console[v5.3.0-BETA3] | install one of symfony/console[v4.4.8, ..., v4.4.17] (conflict analysis result)
- Conclusion: don't install symfony/console[v5.3.0-BETA4] | install one of symfony/console[v4.4.8, ..., v4.4.17] (conflict analysis result)
- Conclusion: don't install symfony/console[v5.0.0-RC1] | install one of symfony/console[v4.4.8, ..., v4.4.17] (conflict analysis result)
- Conclusion: don't install symfony/console[v4.4.8] | install one of laravel/framework[v7.30.3], symfony/console[v5.0.0, ..., v5.3.0-RC1] (conflict analysis result)
- Conclusion: don't install symfony/console[v5.2.0-RC2] | install one of symfony/console[v4.4.9, ..., v4.4.17] (conflict analysis result)
- Conclusion: don't install symfony/console[v5.1.0-RC2] | install one of symfony/console[v4.4.9, ..., v4.4.17] (conflict analysis result)
- Conclusion: don't install symfony/console[v4.4.10] | install one of laravel/framework[v7.30.3], symfony/console[v5.0.0, ..., v5.3.0-RC1] (conflict analysis result)
- Conclusion: don't install symfony/console[v4.4.9] | install one of laravel/framework[v7.30.3], symfony/console[v5.0.0, ..., v5.3.0-RC1] (conflict analysis result)
- Conclusion: don't install symfony/console[v5.0.2] | install one of symfony/console[v4.4.11, ..., v4.4.29] (conflict analysis result)
- Conclusion: don't install symfony/console[v5.2.0-RC1] | install one of symfony/console[v4.4.11, ..., v4.4.17] (conflict analysis result)
- Conclusion: don't install symfony/console[v5.0.3] | install one of symfony/console[v4.4.11, ..., v4.4.29] (conflict analysis result)
- Conclusion: don't install symfony/console[v4.4.11] | install one of laravel/framework[v7.30.3], symfony/console[v5.0.0, ..., v5.3.0-RC1] (conflict analysis result)
- Conclusion: don't install symfony/console[v5.0.0] | install one of symfony/console[v4.4.12, ..., v4.4.17] (conflict analysis result)
- Conclusion: don't install symfony/console[v5.0.1] | install one of symfony/console[v4.4.12, ..., v4.4.17] (conflict analysis result)
- Conclusion: don't install symfony/console[v5.3.0-RC1] | install one of symfony/console[v4.4.12, ..., v4.4.17] (conflict analysis result)
- Conclusion: don't install symfony/console[v5.0.4] | install one of symfony/console[v4.4.12, ..., v4.4.16] (conflict analysis result)
- Conclusion: don't install symfony/console[v4.4.13] | install one of laravel/framework[v7.30.3], symfony/console[v5.0.5, ..., v5.1.0] (conflict analysis result)
- Conclusion: don't install symfony/console[v4.4.12] | install one of laravel/framework[v7.30.3], symfony/console[v5.0.5, ..., v5.1.0] (conflict analysis result)
- Conclusion: don't install symfony/console[v5.0.6] | install one of symfony/console[v4.4.14, ..., v4.4.30] (conflict analysis result)
- Conclusion: don't install symfony/console[v5.0.7] | install one of symfony/console[v4.4.14, ..., v4.4.30] (conflict analysis result)
- Conclusion: don't install symfony/console[v5.0.8] | install one of symfony/console[v4.4.14, ..., v4.4.30] (conflict analysis result)
- Conclusion: don't install symfony/console[v5.0.5] | install one of symfony/console[v4.4.14, v4.4.15, v4.4.16] (conflict analysis result)
- Conclusion: don't install symfony/console[v4.4.14] | install one of laravel/framework[v7.30.3], symfony/console[v5.0.9, v5.0.10, v5.0.11, v5.1.0] (conflict analysis result)
- Conclusion: don't install symfony/console[v5.0.9] | install one of symfony/console[v4.4.15, v4.4.16] (conflict analysis result)
- Conclusion: don't install symfony/console[v5.0.10] | install one of symfony/console[v4.4.15, v4.4.16] (conflict analysis result)
- Conclusion: don't install symfony/console[v4.4.15] | install one of laravel/framework[v7.30.3], symfony/console[v5.0.11] (conflict analysis result)
- Conclusion: don't install laravel/framework v7.30.3 (conflict analysis result)
- Conclusion: don't install facade/ignition 2.10.2 (conflict analysis result)
- Conclusion: don't install facade/ignition 2.11.0 (conflict analysis result)
- Conclusion: don't install symfony/console[v5.0.11] | install symfony/console[v4.4.16] (conflict analysis result)
- Conclusion: don't install symfony/console v4.4.16 (conflict analysis result)
- Conclusion: don't install facade/ignition 2.11.1 (conflict analysis result)
- Conclusion: don't install facade/ignition 2.11.2 (conflict analysis result)
- Conclusion: don't install symfony/console v4.4.17 (conflict analysis result)
- Conclusion: don't install symfony/console v5.1.0 (conflict analysis result)
- Conclusion: don't install symfony/console[v5.1.2] | install one of symfony/console[v4.4.18, ..., v4.4.29] (conflict analysis result)
- Conclusion: don't install symfony/console[v5.1.3] | install one of symfony/console[v4.4.18, ..., v4.4.30] (conflict analysis result)
- Conclusion: don't install symfony/console[v5.1.1] | install one of symfony/console[v4.4.18, ..., v4.4.29] (conflict analysis result)
- Conclusion: don't install symfony/console v4.4.18 (conflict analysis result)
- Conclusion: don't install symfony/console v5.1.4 (conflict analysis result)
- Conclusion: don't install symfony/console v4.4.19 (conflict analysis result)
- Conclusion: don't install symfony/console v5.1.5 (conflict analysis result)
- Conclusion: don't install symfony/console v4.4.20 (conflict analysis result)
- Conclusion: don't install symfony/console v5.1.6 (conflict analysis result)
- Conclusion: don't install symfony/console v4.4.21 (conflict analysis result)
- Conclusion: don't install symfony/console v5.1.7 (conflict analysis result)
- Conclusion: don't install symfony/console[v5.1.10] | install one of symfony/console[v4.4.22, ..., v4.4.30] (conflict analysis result)
- Conclusion: don't install symfony/console[v5.1.11] | install one of symfony/console[v4.4.22, ..., v4.4.30] (conflict analysis result)
- Conclusion: don't install symfony/console[v5.1.9] | install one of symfony/console[v4.4.22, ..., v4.4.29] (conflict analysis result)
- Conclusion: don't install symfony/console[v5.1.8] | install one of symfony/console[v4.4.22, ..., v4.4.29] (conflict analysis result)
- Conclusion: don't install symfony/console v4.4.22 (conflict analysis result)
- Conclusion: don't install symfony/console v5.2.0 (conflict analysis result)
- Conclusion: don't install symfony/console v4.4.23 (conflict analysis result)
- Conclusion: don't install symfony/console v5.2.1 (conflict analysis result)
- Conclusion: don't install symfony/console v4.4.24 (conflict analysis result)
- Conclusion: don't install symfony/console v5.2.2 (conflict analysis result)
- Conclusion: don't install symfony/console v4.4.25 (conflict analysis result)
- Conclusion: don't install symfony/console v5.2.3 (conflict analysis result)
- Conclusion: don't install symfony/console[v5.2.6] | install one of symfony/console[v4.4.26, v4.4.27, v4.4.29, v4.4.30] (conflict analysis result)
- Conclusion: don't install symfony/console[v5.2.7] | install one of symfony/console[v4.4.26, v4.4.27, v4.4.29, v4.4.30] (conflict analysis result)
- Conclusion: don't install symfony/console[v5.2.5] | install one of symfony/console[v4.4.26, v4.4.27, v4.4.29] (conflict analysis result)
- Conclusion: don't install symfony/console[v5.2.4] | install one of symfony/console[v4.4.26, v4.4.27, v4.4.29] (conflict analysis result)
- Conclusion: don't install symfony/console v4.4.26 (conflict analysis result)
- Conclusion: don't install symfony/console v5.2.8 (conflict analysis result)
- Conclusion: don't install symfony/console v4.4.27 (conflict analysis result)
- Conclusion: don't install symfony/console v5.2.10 (conflict analysis result)
- Conclusion: don't install symfony/console v4.4.29 (conflict analysis result)
- Conclusion: don't install symfony/console v5.2.11 (conflict analysis result)
- Conclusion: don't install facade/ignition 2.11.3 (conflict analysis result)
- Conclusion: don't install symfony/console v5.2.12 (conflict analysis result)
- Conclusion: don't install facade/ignition 2.11.4 (conflict analysis result)
- Conclusion: don't install symfony/console v5.2.14 (conflict analysis result)
- Conclusion: don't install symfony/console v5.3.0 (conflict analysis result)
- Conclusion: don't install symfony/console[v5.3.4] | install symfony/console[v4.4.30] (conflict analysis result)
- Conclusion: don't install symfony/console[v5.3.2] | install symfony/console[v4.4.30] (conflict analysis result)
- Conclusion: don't install symfony/console v4.4.30 (conflict analysis result)
- Conclusion: don't install facade/ignition 2.12.0 (conflict analysis result)
- Conclusion: don't install symfony/console v5.3.6 (conflict analysis result)
- Conclusion: don't install one of phploc/phploc[5.0.0], symfony/console[v5.3.7] (conflict analysis result)
- Conclusion: don't install sebastian/version[2.0.1] | install phploc/phploc[5.0.0] (conflict analysis result)
- Conclusion: install sebastian/version 2.0.1 (conflict analysis result)
- Conclusion: don't install one of phploc/phploc[5.0.0], symfony/console[v5.2.4] | install one of symfony/console[v4.4.18, ..., v4.4.30] (conflict analysis result)
- Conclusion: don't install symfony/console v4.4.2 (conflict analysis result)
- Conclusion: don't install one of phploc/phploc[5.0.0], symfony/console[v5.2.5] | install one of symfony/console[v4.4.18, ..., v4.4.30] (conflict analysis result)
- Conclusion: don't install one of phploc/phploc[5.0.0], symfony/console[v5.1.0-BETA1] | install one of symfony/console[v4.2.0, ..., v4.4.30] (conflict analysis result)
- Conclusion: don't install one of phploc/phploc[5.0.0], symfony/console[v5.0.0-BETA2] | install one of symfony/console[v4.1.12, ..., v4.4.30] (conflict analysis result)
- Root composer.json requires laravel/framework 7.x -> satisfiable by laravel/framework[v7.0.0, ..., 7.x-dev].
- Root composer.json requires phpunit/phpunit ^8.5 -> satisfiable by phpunit/phpunit[8.5.0, ..., 8.5.x-dev].
- Root composer.json requires nunomaduro/phpinsights ^1.11 -> satisfiable by nunomaduro/phpinsights[v1.11.0, ..., v1.x-dev].
- facade/ignition[2.0.0, ..., 2.9.1] require symfony/console ^5.0 -> satisfiable by symfony/console[v5.0.0-BETA1, ..., 5.4.x-dev].
- Conclusion: don't install symfony/console[5.2.x-dev] | install one of symfony/console[v4.4.2, ..., v4.4.17] (conflict analysis result)
- Root composer.json requires facade/ignition ^2.0 -> satisfiable by facade/ignition[2.0.0, ..., 2.12.0].
Use the option --with-all-dependencies (-W) to allow upgrades, downgrades and removals for packages currently locked to specific versions.
我无法准确阅读问题所在,并且不知道如何解决这个问题(尤其是因为我正在按照 Laravel 更新文档中列出的步骤进行操作)。
我读过一些类似的更新问题,因为 phploc 和 require-dev 包需要不同的 symphony/console 包版本?我不知道,如果是这样的话,我什至不知道如何解决。
更新:
尝试用 phploc/phploc 解决问题,我尝试了composer update phploc/phploc "6.0.0" -w。
这会产生以下错误:
Loading composer repositories with package information
Package "6.0.0" listed for update is not locked.
Dependency "laravel/framework" is also a root requirement. Package has not been listed as an update argument, so keeping locked at old version. Use --with-all-dependencies (-W) to include root dependencies.
Dependency "phpunit/phpunit" is also a root requirement. Package has not been listed as an update argument, so keeping locked at old version. Use --with-all-dependencies (-W) to include root dependencies.
Updating dependencies
Your requirements could not be resolved to an installable set of packages.
Problem 1
- Root composer.json requires facade/ignition ^2.0, found facade/ignition[2.0.0, ..., 2.12.0] but the package is fixed to 1.18.0 (lock file version) by a partial update and that version does not
match. Make sure you list it as an argument for the update command.
Problem 2
- Root composer.json requires laravel/framework 7.x, found laravel/framework[v7.0.0, ..., 7.x-dev] but the package is fixed to v6.20.33 (lock file version) by a partial update and that version does not match. Make sure you list it as an argument for the update command.
Problem 3
- Root composer.json requires laravel/tinker ^2.0, found laravel/tinker[v2.0.0, ..., 2.x-dev] but the package is fixed to v1.0.10 (lock file version) by a partial update and that version does not match. Make sure you list it as an argument for the update command.
Problem 4
- laravel/ui[v2.0.0, ..., 2.x-dev] require illuminate/console ^7.0 -> found illuminate/console[v7.0.0, ..., 7.x-dev] but these were not loaded, likely because it conflicts with another require.
- laravel/ui[v2.2.0, ..., v2.3.0] require illuminate/console ^7.0|^8.0 -> found illuminate/console[v7.0.0, ..., 7.x-dev, v8.0.0, ..., 8.x-dev] but these were not loaded, likely because it conflicts with another require.
- Root composer.json requires laravel/ui ^2.0 -> satisfiable by laravel/ui[v2.0.0, ..., 2.x-dev].
Use the option --with-all-dependencies (-W) to allow upgrades, downgrades and removals for packages currently locked to specific versions.
尝试过的 composer 需要 phploc/phploc 和更新,无论有没有 -w 所有结果都大致如下:
Problem 1
- nunomaduro/phpinsights is locked to version v1.13.0 and an update of this package was not requested.
- nunomaduro/phpinsights v1.13.0 requires phploc/phploc ^5.0 -> found phploc/phploc[5.0.0] but it conflicts with your root composer.json require (^7.0).
Problem 2
- phploc/phploc 7.0.x-dev is an alias of phploc/phploc dev-master and thus requires it to be installed too.
- phploc/phploc[dev-master, 7.0.0, ..., 7.0.2] require sebastian/version ^3.0 -> satisfiable by sebastian/version[3.0.0, 3.0.1, 3.0.2].
- You can only install one version of a package, so only one of these can be installed: sebastian/version[2.0.1, 3.0.0, 3.0.1, 3.0.2].
- phpunit/phpunit 7.5.20 requires sebastian/version ^2.0.1 -> satisfiable by sebastian/version[2.0.1].
- phpunit/phpunit is locked to version 7.5.20 and an update of this package was not requested.
- Root composer.json requires phploc/phploc ^7.0 -> satisfiable by phploc/phploc[7.0.0, 7.0.1, 7.0.2, 7.0.x-dev (alias of dev-master)].
【问题讨论】:
-
这能回答你的问题吗? How to explain Composer's error log?
-
很遗憾,由于我很少与作曲家打交道,我发现解决这类问题非常困难。我不知道如何处理像“所以,我所做的是我删除了所有依赖项,然后将它们一一添加回来”这样的句子。一个问题是,似乎是罪魁祸首,phploc/phploc 甚至不在 composer.json 中的包列表中
标签: laravel composer-php