我想更新我的symfony projet(当前2.8到sf 3. *)
这是我的composer.json文件(requiere part)
"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
所以我尝试将media-bundle更新为3.10.1,但它在另一个奏鸣曲包中给了我一个错误..
我该怎样做对吗? 我必须逐个更新模块? 或者更新我的composer.json并进行所有修改?
感谢
答案 0 :(得分:0)
您的奏鸣曲依赖性太旧,不支持Symfony 3.
示例:https://github.com/sonata-project/SonataMediaBundle/blob/2.x/composer.json
您必须升级依赖项才能使其正常运行。
此外,您可以使用composer why-not
命令获得更多帮助。
答案 1 :(得分:0)
我也被困在这个错误中几次。错误消息有点抽象。
要解决此错误,您需要更新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将在幕后执行此操作,并在您的包或它们之间的兼容性不兼容时抛出该错误。
希望有所帮助。