将 symfony 2.8 更新到 3.* ,奏鸣曲错误
Posted
技术标签:
【中文标题】将 symfony 2.8 更新到 3.* ,奏鸣曲错误【英文标题】:update symfony 2.8 to 3.* , sonata errors 【发布时间】:2018-07-09 12:19:57 【问题描述】:我想更新我的 symfony 项目(当前 2.8 到 sf 3.*)
这是我的 composer.json 文件(需要的部分)
"require":
"php": ">=5.3.9",
"symfony/symfony": "2.8.*",
"doctrine/orm": "^2.4.8",
"doctrine/doctrine-bundle": "~1.4",
"symfony/assetic-bundle": "~2.3",
"symfony/swiftmailer-bundle": "~2.3",
"symfony/monolog-bundle": "~2.4",
"sensio/distribution-bundle": "~4.0",
"sensio/framework-extra-bundle": "^3.0.2",
"incenteev/composer-parameter-handler": "~2.0",
"sonata-project/media-bundle": "^2.3",
"sonata-project/user-bundle": "^2.2",
"sonata-project/formatter-bundle": "~2.3",
"sonata-project/doctrine-orm-admin-bundle": "~2.2",
"sonata-project/admin-bundle": "~2.2",
"sonata-project/timeline-bundle": "^2.2",
"sonata-project/intl-bundle": "^2.2",
"sonata-project/cache-bundle": "^2.2",
"liuggio/excelbundle": "^2.0",
"friendsofsymfony/elastica-bundle": "^3.1",
"liip/imagine-bundle": "^1.4",
"friendsofsymfony/jsrouting-bundle": "^1.6",
"gos/web-socket-bundle": "^1.8"
,
如果我改变了
"symfony/symfony": "2.8.*",
到
"symfony/symfony": "~3.0",
然后做
php composer.phar update symfony/symfony --with-dependencies
但我有这个错误
Problem 1
- sonata-project/media-bundle 2.3.4 requires symfony/symfony ~2.3 -> satisfiable by symfony/symfony
所以我尝试将媒体包更新到 3.10.1,但它在另一个奏鸣曲包中给了我一个错误..
我应该如何做正确的事情? 我必须一个一个地更新模块吗? 或者用所有修改更新我的 composer.json ?
谢谢
【问题讨论】:
开始一个新的项目,并一一要求你的依赖。可能不会花很长时间,你应该最终得到一个工作的 composer.json 文件。或者您会发现某些捆绑软件根本不支持 S3.x。 【参考方案1】:你的奏鸣曲依赖太旧了,不支持 Symfony 3。
示例:https://github.com/sonata-project/SonataMediaBundle/blob/2.x/composer.json
您必须升级您的依赖项才能使其正常工作。
另外,您可以使用composer why-not
命令获得更多帮助。
【讨论】:
“升级你的依赖让它工作”这是我的问题:(我不知道从哪里开始,我应该一个包一个包吗?【参考方案2】:我也有几次陷入这个错误。错误信息有点抽象。
要解决此错误,您需要在 composer.json 文件中更新 sonata-project/media-bundle
的版本。
所以你可以将其替换为:"sonata-project/media-bundle": "^3.1",
然后再次运行composer update
命令。您可能会遇到与上面相同的错误,但对于另一个包。也更新一下。重复此操作,直到您的 composer update 命令成功。
到那时,如果您幸运的话,您的应用程序将会运行。如果不是,您需要更新代码以使用新的包版本代码。请记住,更新包的第一个数字(从 2.8 到 3.something)意味着这是一个breaking compatibility
更新。
稍后更新:如果您在此处查看sonata-project/media-bundle
2.3 版的composer.json 文件:https://github.com/sonata-project/SonataMediaBundle/blob/2.3.0/composer.json,您将看到它需要symfony 版本:"symfony/symfony": "~2.3"
,并且您想更新到symfony 3.something 版本。所以它们是不相容的。这就是为什么你还需要更新这个包等等。 Composer 将在后台执行此操作,并在您的包或其依赖项之间不兼容时抛出该错误。
希望对您有所帮助。
【讨论】:
以上是关于将 symfony 2.8 更新到 3.* ,奏鸣曲错误的主要内容,如果未能解决你的问题,请参考以下文章