现有的Symfony项目和令人困惑的composer.json包需要不同版本的Symfony

时间:2013-09-23 10:43:57

标签: php symfony composer-php

我正在尝试扩展现有的Symfony应用程序,但是composer.json没有任何意义。

"symfony/symfony": "2.1.*"

导致错误,因为2.1。*不是可解析的版本号,这表明程序员没有费心去更新文件或使用它。

然后我尝试将其改为:

"symfony/symfony": "2.1.12"

然后失败,因为:

mopa/bootstrap-bundle dev-master requires symfony/symfony ~2.3-dev 
jms/di-extra-bundle 1.1.0-RC requires symfony/framework-bundle 2.1.* 

这表明我可以安装bootstrap或jms,因为一个需要symfony 2.1而另一个需要2.3但是在composer.phar中我看到了:

    "jms/di-extra-bundle": "1.1.*",
    "mopa/bootstrap-bundle": "dev-master",

在生产服务器中,我看到供应商有一个jsm和mopa子目录,在vendor / symfony / symfony下,我能找到的最高更改日志是CHANGELOG-2.1.md,表明使用了某些版本的Symfony 2.1(只有ftp)访问所以无法运行命令来检查版本。)

我想知道我是如何安装这个的,因为它只是在每次Symfony版本都没有得到解决时退出。

另一件事是;我应该解决这个问题。如果其中一个软件包由于Symfony版本错误而无法运行,那么首先安装它的重点是什么?

1 个答案:

答案 0 :(得分:1)

如果您要从先前版本的symfony进行更新,则必须更新所有dependeciens。所以看https://github.com/symfony/symfony-standard/blob/v2.1.11/composer.json你必须设置:

    "php": ">=5.3.3",
    "symfony/symfony": "2.1.*",
    "doctrine/orm": ">=2.2.3,<2.5-dev",
    "doctrine/doctrine-bundle": "1.1.*",
    "twig/extensions": "1.0.*@dev",
    "symfony/assetic-bundle": "2.1.*",
    "symfony/swiftmailer-bundle": "2.1.*",
    "symfony/monolog-bundle": "2.1.*",
    "sensio/distribution-bundle": "2.1.*",
    "sensio/framework-extra-bundle": "2.1.*",
    "sensio/generator-bundle": "2.1.*",
    "jms/security-extra-bundle": "1.2.*",
    "jms/di-extra-bundle": "1.1.*",
    "kriswallsmith/assetic": "1.1.*@dev"

在packagist(https://packagist.org/packages/mopa/bootstrap-bundle)上寻找MopaBootstrapBundle,支持Symfony 2.1的最后一个版本是:

"mopa/bootstrap-bundle": "2.2.*@dev"