首页 > 解决方案 > 将 SF 从 2.8 升级到 3.xx

问题描述

我在从 Symfony 2.8 迁移到 Symfony 3 及更高版本时遇到问题。几天来,我一直在尝试更新我的项目,但我阻止了同样的错误。我尝试了所有可以在谷歌上找到的解决方案,但没有改进。这是我的文件 composer.json

{
"name": "My/project",
"license": "proprietary",
"type": "project",
"autoload": {
    "psr-4": {
        "": "src/"
    },
    "classmap": [
        "app/AppKernel.php",
        "app/AppCache.php"
    ]
},
"require": {
    "php": ">=5.3.9",
    "symfony/symfony": "3.0.*",
    "doctrine/orm": "^2.5",
    "doctrine/doctrine-bundle": "^1.6",
    "symfony/swiftmailer-bundle": "~2.3",
    "symfony/monolog-bundle": "~2.4",
    "sensio/distribution-bundle": "~5.0",
    "sensio/framework-extra-bundle": "^3.0.2",
    "incenteev/composer-parameter-handler": "~2.0",
    "sonata-project/admin-bundle": "3.13",
    "sonata-project/doctrine-orm-admin-bundle": "^3.1",
    "friendsofsymfony/user-bundle": "^1.3",
    "sonata-project/core-bundle": "^3.1",
    "sonata-project/easy-extends-bundle": "^2.1",
    "sonata-project/user-bundle": "^3.2",
    "sonata-project/formatter-bundle": "^3.1",
    "knplabs/knp-paginator-bundle": "^2.5",
    "sonata-project/intl-bundle": "^2.3",
    "google/recaptcha": "^1.1",
    "twig/twig": "1.28.2",
    "friendsofsymfony/jsrouting-bundle": "^1.6",
    "helios-ag/fm-elfinder-bundle": "^6.2",
    "vich/uploader-bundle": "1.5.3",
    "beberlei/doctrineextensions": "^1.0",
    "simplethings/entity-audit-bundle": "^1.0",
    "sentry/sentry-symfony": "^1.0",
    "rollbar/rollbar": "~1.1",
    "mikey179/vfsstream": "^1.6"
},
"require-dev": {
    "sensio/generator-bundle": "~3.0",
    "doctrine/doctrine-fixtures-bundle": "^2.3",
    "hautelook/alice-bundle": "^2.0@beta",
    "nelmio/alice": "^3.0@beta",
    "theofidry/alice-data-fixtures": "^1.0@beta",
    "symfony/phpunit-bridge": "^4.2",
    "phpunit/phpunit": "^6.1",
    "behat/behat": "^3.4",
    "behat/mink": "^1.7",
    "behat/mink-selenium2-driver": "^1.3",
    "behat/symfony2-extension": "^2.1",
    "behat/mink-extension": "^2.2",
    "behat/mink-browserkit-driver": "^1.3",
    "behat/mink-goutte-driver": "^1.2",
    "emuse/behat-html-formatter": "^0.1.0",
    "phing/phing": "2.*"
},
"scripts": {
    "symfony-scripts": [
        "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile",
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::prepareDeploymentTarget"
    ],
    "post-install-cmd": [
        "@symfony-scripts"
    ],
    "post-update-cmd": [
        "@symfony-scripts"
    ]
},
"config": {
    "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"
    }
}

}

我使用此命令进行更新:$ composer update symfony/symfony --with-dependencies --no-scripts

更新未完成,因为显然我与我的依赖项的不同版本有冲突..但是我无法在更新的版本中更新我的依赖项

在此处输入图像描述

需要你的帮助请..

标签: symfonymigrationsymfony-2.8symfony3.x

解决方案


你有冲突,因为你不能同时拥有symfony/symfony 3.0.*symfony/cache 3.4

事实上,您锁定在某个版本的其他捆绑软件与 symfony 3.0 不兼容,因此您也需要升级它们。

最可行的方法是使用这些依赖项:

"symfony/symfony": "3.2.*",
"friendsofsymfony/user-bundle": "^2.0",
"sonata-project/user-bundle": "^4.0",

然后只需运行composer install而不是composer update symfony/symfony. Composer 将完成它的工作,然后您必须调整您的代码以减轻所有 BC 中断等...

如果您无法更改其他依赖项,那么您将被 Sf 2.8 困住


推荐阅读