从 Symfony 3.4 升级到 4:升级 symfony 时出错

Posted

技术标签:

【中文标题】从 Symfony 3.4 升级到 4:升级 symfony 时出错【英文标题】:Upgrade from Symfony 3.4 to 4 : Errors when upgrading symfony 【发布时间】:2022-01-10 22:24:02 【问题描述】:

我尝试将我的 Symfony 3.4 项目升级到 Symfony 4。我清理了我的项目所有弃用但现在当我想升级时,我遇到了这些问题,我不知道该怎么做。

COMPOSER_MEMORY_LIMIT=-1 作曲家更新“symfony/*” --with-all-dependencies 使用包信息加载作曲家存储库 来自https://repo.packagist.org 的警告:对 Composer 1 的支持是 已弃用,某些软件包将不可用。你应该升级 给作曲家 2。见 https://blog.packagist.com/deprecating-composer-1-support/更新中 依赖项(包括 require-dev) 您的要求不能 解析为一组可安装的软件包。

问题 1 - symfony/options-resolver v6.0.0 需要 php >=8.0.2 -> 你的 PHP 版本 (7.2.14) 不满足这个要求。 - 结论:不要安装 symfony/symfony v4.4.35 - 结论:不要安装 symfony/symfony v4.4.34 - 结论:不要安装 symfony/symfony v4.4.33 - 结论:不要安装 symfony/symfony v4.4.32 - 结论:不要安装 symfony/symfony v4.4.31 - 结论:不要安装 symfony/symfony v4.4.30 - 结论:不要安装 symfony/symfony v4.4.29 - 结论:不要安装 symfony/symfony v4.4.28 - 结论:不要安装 symfony/symfony v4.4.27 - 结论:不要安装 symfony/symfony v4.4.26 - 结论:不要安装 symfony/symfony v4.4.25 - 结论:不要安装 symfony/symfony v4.4.24 - 结论:不要安装 symfony/symfony v4.4.23 - 结论:不要安装 symfony/symfony v4.4.22 - 结论:不要安装 symfony/symfony v4.4.21 - 结论:不要安装 symfony/symfony v4.4.20 - 结论:不要安装 symfony/symfony v4.4.19 - 结论:不要安装 symfony/symfony v4.4.18 - 结论:不要安装 symfony/symfony v4.4.17 - 结论:不要安装 symfony/symfony v4.4.16 - 结论:不要安装 symfony/symfony v4.4.15 - 结论:不要安装 symfony/symfony v4.4.14 - 结论:不要安装 symfony/symfony v4.4.13 - 结论:不要安装 symfony/symfony v4.4.12 - 结论:不要安装 symfony/symfony v4.4.11 - 结论:不要安装 symfony/symfony v4.4.10 - 结论:不要安装 symfony/symfony v4.4.9 - 结论:不要安装 symfony/symfony v4.4.8 - 结论:不要安装 symfony/symfony v4.4.7 - 结论:不要安装 symfony/symfony v4.4.6 - 结论:不要安装 symfony/symfony v4.4.5 - 结论:不要安装 symfony/symfony v4.4.4 - 结论:不要安装 symfony/symfony v4.4.3 - 结论:不要安装 symfony/symfony v4.4.2 - 结论:不要安装 symfony/symfony v4.4.1 - 结论:不要安装 symfony/symfony v4.4.0 - 结论:删除 liip/imagine-bundle 2.7.3 - 结论:不要安装 symfony/symfony v4.3.11 - 结论:不要安装 symfony/symfony v4.3.10 - 结论:不要安装 symfony/symfony v4.3.9 - 结论:不要安装 symfony/symfony v4.3.8 - 结论:不要安装 symfony/symfony v4.3.7 - 结论:不要安装 symfony/symfony v4.3.6 - 结论:不要安装 symfony/symfony v4.3.5 - 结论:不要安装 symfony/symfony v4.3.4 - 结论:不要安装 symfony/symfony v4.3.3 - 结论:不要安装 symfony/symfony v4.3.2 - 结论:不要安装 symfony/symfony v4.3.1 - 结论:不要安装 symfony/symfony v4.3.0 - 结论:不要安装 symfony/symfony v4.2.12 - 结论:不要安装 symfony/symfony v4.2.11 - 结论:不要安装 symfony/symfony v4.2.10 - 结论:不要安装 symfony/symfony v4.2.9 - 结论:不要安装 symfony/symfony v4.2.8 - 结论:不要安装 symfony/symfony v4.2.7 - 结论:不要安装 symfony/symfony v4.2.6 - 结论:不要安装 symfony/symfony v4.2.5 - 结论:不要安装 symfony/symfony v4.2.4 - 结论:不要安装 symfony/symfony v4.2.3 - 结论:不要安装 symfony/symfony v4.2.2 - 结论:不要安装 symfony/symfony v4.2.1 - 结论:不要安装 symfony/symfony v4.2.0 - 结论:不要安装 symfony/symfony v4.1.13 - 结论:不要安装 symfony/symfony v4.1.12 - 结论:不要安装 symfony/symfony v4.1.11 - 结论:不要安装 symfony/symfony v4.1.10 - 结论:不要安装 symfony/symfony v4.1.9 - 结论:不要安装 symfony/symfony v4.1.8 - 结论:不要安装 symfony/symfony v4.1.7 - 结论:不要安装 symfony/symfony v4.1.6 - 结论:不要安装 symfony/symfony v4.1.5 - 结论:不要安装 symfony/symfony v4.1.4 - 结论:不要安装 symfony/symfony v4.1.3 - 结论:不要安装 symfony/symfony v4.1.2 - 结论:不要安装 symfony/symfony v4.1.1 - 结论:不要安装 symfony/symfony v4.1.0 - 结论:不要安装 symfony/symfony v4.0.15 - 结论:不要安装 symfony/symfony v4.0.14 - 结论:不要安装 symfony/symfony v4.0.13 - 结论:不要安装 symfony/symfony v4.0.12 - 结论:不要安装 symfony/symfony v4.0.11 - 结论:不要安装 symfony/symfony v4.0.10 - 结论:不要安装 symfony/symfony v4.0.9 - 结论:不要安装 symfony/symfony v4.0.8 - 结论:不要安装 symfony/symfony v4.0.7 - 结论:不要安装 symfony/symfony v4.0.6 - 结论:不要安装 symfony/symfony v4.0.5 - 结论:不要安装 symfony/symfony v4.0.4 - 结论:不要安装 symfony/symfony v4.0.3 - 结论:不要安装 symfony/symfony v4.0.2 - kriswallsmith/assetic 的安装请求(安装在 v1.4.0)-> kriswallsmith/assetic[v1.4.0] 可以满足。 - liip/imagine-bundle 的安装请求(安装在 2.7.3,需要为 ^2.7)-> 可以由 liip/imagine-bundle[2.7.3] 满足。 - 结论:不要安装 symfony/symfony v4.0.1 - liip/imagine-bundle 2.7.3 需要 symfony/options-resolver ^3.4|^4.4|^5.3|^6.0 -> 可满足 symfony/symfony[v3.4.49, v4.4.0, v4.4.1、v4.4.10、v4.4.11、v4.4.12、v4.4.13、v4.4.14、v4.4.15、v4.4.16、 v4.4.17、v4.4.18、v4.4.19、v4.4.2、v4.4.20、v4.4.21、v4.4.22、v4.4.23、 v4.4.24、v4.4.25、v4.4.26、v4.4.27、v4.4.28、v4.4.29、v4.4.3、v4.4.30、 v4.4.31、v4.4.32、v4.4.33、v4.4.34、v4.4.35、v4.4.4、v4.4.5、v4.4.6、 v4.4.7, v4.4.8, v4.4.9], symfony/options-resolver[v3.4.0, v3.4.1, v3.4.10、v3.4.11、v3.4.12、v3.4.13、v3.4.14、v3.4.15、v3.4.16、 v3.4.17、v3.4.18、v3.4.19、v3.4.2、v3.4.20、v3.4.21、v3.4.22、v3.4.23、 v3.4.24、v3.4.25、v3.4.26、v3.4.27、v3.4.28、v3.4.29、v3.4.3、v3.4.30、 v3.4.31、v3.4.32、v3.4.33、v3.4.34、v3.4.35、v3.4.36、v3.4.37、 v3.4.38、v3.4.39、v3.4.4、v3.4.40、v3.4.41、v3.4.42、v3.4.43、v3.4.44、 v3.4.45、v3.4.46、v3.4.47、v3.4.5、v3.4.6、v3.4.7、v3.4.8、v3.4.9、 v4.4.0、v4.4.1、v4.4.10、v4.4.11、v4.4.12、v4.4.13、v4.4.14、v4.4.15、 v4.4.16、v4.4.17、v4.4.18、v4.4.19、v4.4.2、v4.4.20、v4.4.25、v4.4.27、 v4.4.3、v4.4.30、v4.4.4、v4.4.5、v4.4.6、v4.4.7、v4.4.8、v4.4.9、 v5.3.0、v5.3.4、v5.3.7、v5.4.0、v6.0.0]。 - 只能安装以下之一:symfony/symfony[v4.0.0, v3.4.49]。 - 不要安装 symfony/options-resolver v3.4.0|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v3.4.1|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v3.4.10|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v3.4.11|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v3.4.12|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v3.4.13|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v3.4.14|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v3.4.15|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v3.4.16|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v3.4.17|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v3.4.18|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v3.4.19|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v3.4.2|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v3.4.20|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v3.4.21|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v3.4.22|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v3.4.23|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v3.4.24|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v3.4.25|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v3.4.26|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v3.4.27|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v3.4.28|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v3.4.29|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v3.4.3|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v3.4.30|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v3.4.31|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v3.4.32|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v3.4.33|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v3.4.34|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v3.4.35|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v3.4.36|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v3.4.37|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v3.4.38|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v3.4.39|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v3.4.4|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v3.4.40|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v3.4.41|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v3.4.42|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v3.4.43|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v3.4.44|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v3.4.45|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v3.4.46|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v3.4.47|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v3.4.5|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v3.4.6|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v3.4.7|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v3.4.8|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v3.4.9|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v4.4.0|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v4.4.1|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v4.4.10|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v4.4.11|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v4.4.12|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v4.4.13|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v4.4.14|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v4.4.15|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v4.4.16|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v4.4.17|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v4.4.18|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v4.4.19|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v4.4.2|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v4.4.20|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v4.4.25|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v4.4.27|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v4.4.3|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v4.4.30|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v4.4.4|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v4.4.5|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v4.4.6|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v4.4.7|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v4.4.8|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v4.4.9|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v5.3.0|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v5.3.4|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v5.3.7|不要安装 symfony/symfony v4.0.0 - 不要安装 symfony/options-resolver v5.4.0|不要安装 symfony/symfony v4.0.0 - symfony/symfony ^4 的安装请求 -> 可满足 symfony/symfony[v4.0.0, v4.0.1, v4.0.10, v4.0.11, v4.0.12, v4.0.13, v4.0.14、v4.0.15、v4.0.2、v4.0.3、v4.0.4、v4.0.5、v4.0.6、v4.0.7、 v4.0.8、v4.0.9、v4.1.0、v4.1.1、v4.1.10、v4.1.11、v4.1.12、v4.1.13、 v4.1.2、v4.1.3、v4.1.4、v4.1.5、v4.1.6、v4.1.7、v4.1.8、v4.1.9、 v4.2.0、v4.2.1、v4.2.10、v4.2.11、v4.2.12、v4.2.2、v4.2.3、v4.2.4、 v4.2.5、v4.2.6、v4.2.7、v4.2.8、v4.2.9、v4.3.0、v4.3.1、v4.3.10、 v4.3.11、v4.3.2、v4.3.3、v4.3.4、v4.3.5、v4.3.6、v4.3.7、v4.3.8、 v4.3.9、v4.4.0、v4.4.1、v4.4.10、v4.4.11、v4.4.12、v4.4.13、v4.4.14、 v4.4.15、v4.4.16、v4.4.17、v4.4.18、v4.4.19、v4.4.2、v4.4.20、v4.4.21、 v4.4.22、v4.4.23、v4.4.24、v4.4.25、v4.4.26、v4.4.27、v4.4.28、 v4.4.29、v4.4.3、v4.4.30、v4.4.31、v4.4.32、v4.4.33、v4.4.34、v4.4.35、 v4.4.4、v4.4.5、v4.4.6、v4.4.7、v4.4.8、v4.4.9]。

这是我的 composer.json :


    "name": "beyonds/base",
    "license": "Beyonds",
    "type": "project",
    "autoload": 
        "psr-4": 
            "AppBundle\\": "src/AppBundle"
        ,
        "classmap": [
            "app/AppKernel.php",
            "app/AppCache.php"
        ]
    ,
    "autoload-dev": 
        "psr-4": 
            "Tests\\": "tests/"
        ,
        "files": [
            "vendor/symfony/symfony/src/Symfony/Component/VarDumper/Resources/functions/dump.php"
        ]
    ,
    "repositories": [
        
            "type": "vcs",
            "url":  "git@gitlab.com:alexandre.bru/admin-generator-bundle.git"
        
    ],
    "require": 
        "php": "^5.5.9|>=7.0.8",
        "algolia/search-bundle": "4.0.0",
        "doctrine/doctrine-bundle": "^1.6",
        "doctrine/inflector": "^1.4|^2.0",
        "doctrine/orm": "^2.7",
        "excelwebzone/recaptcha-bundle": "^1.5",
        "friendsofsymfony/ckeditor-bundle": "^2",
        "friendsofsymfony/jsrouting-bundle": "^2.2",
        "friendsofsymfony/user-bundle": "~2.0",
        "helios-ag/fm-elfinder-bundle": "^9.3",
        "incenteev/composer-parameter-handler": "^2.0",
        "lexik/translation-bundle": "^4.0",
        "liip/imagine-bundle": "^2.7",
        "nochso/html-compress-twig": "^2.0",
        "sensio/framework-extra-bundle": "^5.4",
        "stof/doctrine-extensions-bundle": "^1.3",
        "symfony/monolog-bundle": "^3.6.0",
        "symfony/polyfill-apcu": "^1.23",
        "symfony/swiftmailer-bundle": "^3.3",
        "symfony/symfony": "^4",
        "thormeier/breadcrumb-bundle": "^2.2",
        "twig/extensions": "^1.2",
        "twig/twig": "^1.0||^2.0",
        "vich/uploader-bundle": "^1.4"
    ,
    "require-dev": 
        "beyonds/cms-generator-bundle": "dev-master",
        "doctrine/doctrine-fixtures-bundle": "^3.4",
        "symfony/phpunit-bridge": "^6.0"
    ,
    "scripts": 
        "symfony-scripts": [
            "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters"
        ],
        "post-install-cmd": [
            "@symfony-scripts"
        ],
        "post-update-cmd": [
            "@symfony-scripts"
        ]
    ,
    "config": 
        "sort-packages": true,
        "component-dir": "web/assets"
    ,
    "extra": 
        "symfony-app-dir": "app",
        "symfony-bin-dir": "bin",
        "symfony-var-dir": "var",
        "symfony-web-dir": "web",
        "symfony-tests-dir": "tests",
        "symfony-assets-install": "relative",
        "incenteev-parameters": 
            "file": "app/config/parameters.yml"
        ,
        "branch-alias": null,
        "symfony": 
            "allow-contrib": "true"
        
    

【问题讨论】:

这有点不清楚:composer.json 已经需要 Symfony 4!?如果您手动编辑它,您可以丢弃锁定文件并运行composer install 是的,我只是将 Symfony 版本从 ^3.4 更改为 ^4 并使用依赖项执行 composer update 我不会这样做。相反,我会使用composer require ... 进行升级。此外,这个房间里还有一头大象:“来自repo.packagist.org 的composer 警告:不推荐使用对Composer 1 的支持,并且某些软件包将不可用。您应该升级到Composer 2。”,所以运行composer self-update 是的,但是 composer-plugin-api 需要在 1.0.0 而不是 2.0.0 上:Problem 1 - helios-ag/fm-elfinder-bundle[9.3, ..., 9.3.2] require robloach/component-installer ~0.2 -> satisfiable by robloach/component-installer[0.2.0, 0.2.1, 0.2.2, 0.2.3]. - robloach/component-installer 0.2.0 requires composer-plugin-api 1.0.0 -> found composer-plugin-api[2.1.0] but it does not match the constraint. - robloach/component-installer[0.2.1, ..., 0.2.3] require composer-plugin-api ^1.0 -> found composer-plugin-api[2.1.0] but it does not match the constraint. 所以,有一个包裹阻碍了你。检查你是否真的需要它。检查它是否真的取决于该插件 API 版本。检查修复此问题的错误票证/拉取请求。这很可能正是阻止您升级 Symfony 的原因。 【参考方案1】:

跳过需求列表,这可能是罪魁祸首:

helios-ag/fm-elfinder-bundle 在 v9 中需要 robloach/component-installer robloach/component-installer 在任何版本中都需要 kriswallsmith/assetic 最新版本中的kriswallsmith/assetic 需要来自 Symfony 3 的组件,并且与 Symfony 4 兼容

您应该将helios-ag/fm-elfinder-bundle 更新到任何更高版本以摆脱对robloach/component-installer 的依赖

【讨论】:

以上是关于从 Symfony 3.4 升级到 4:升级 symfony 时出错的主要内容,如果未能解决你的问题,请参考以下文章

Symfony LTS:如何从 2.8 升级到 3.4?

Symfony 更新 2.8 到 3.4

symfony 3.4 设置 prod 环境

Symfony 2.8 -> 3.4 本地开发速度降低

为啥升级到 Symfony 4.4 后我不再看到错误预览页面?

如何将Symfony 3捆绑应用程序升级到Symfony 4无捆绑应用程序?