composer.json无法解析可安装的包集

sma*_*ech 3 symfony composer-php symfony-2.1

我无法stof/doctrine-extensions-bundle使用我的Composer进行安装.我正在使用Symfony2.1.9版本,并显示了很多问题.第一个是:

找不到请求的包stof/doctrine-extensions-bundle 1.1.*.

这是我的composer.json档案:

{
    "name": "symfony/framework-standard-edition",
    "description": "The \"Symfony Standard Edition\" distribution",
    "autoload": {
        "psr-0": { "": "src/" }
    },
    "require": {
        "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",
        "pagerfanta/pagerfanta": "dev-master",
        "white-october/pagerfanta-bundle": "dev-master",
        "friendsofsymfony/user-bundle": "dev-master",
        "saad-tazi/g-chart-bundle": "dev-master",
       "stof/doctrine-extensions-bundle": "1.1.*",
    },
    "scripts": {
        "post-install-cmd": [
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile"
        ],
        "post-update-cmd": [
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile"
        ]
    },
    "extra": {
        "symfony-app-dir": "app",
        "symfony-web-dir": "web",
        "branch-alias": {
            "dev-master": "2.1-dev"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当我将包装要求设置为:"stof/doctrine-extensions-bundle": "1.1.*@dev" 响应是:your requirement could not be resolved to an installable set of package

可能是什么问题?我应该先安装DoctrineExtensions ????

错误信息:

Problem 1
    - Conclusion: don't install symfony/symfony v2.1.10
    - Conclusion: remove symfony/symfony v2.1.9
    - Conclusion: don't install symfony/symfony v2.1.9
    - Conclusion: don't install symfony/symfony v2.1.8
    - Conclusion: don't install symfony/symfony v2.1.7
    - Conclusion: don't install symfony/symfony v2.1.6
    - Conclusion: don't install symfony/symfony v2.1.5
    - Conclusion: don't install symfony/symfony v2.1.4
    - Conclusion: don't install symfony/symfony v2.1.3
    - Conclusion: don't install symfony/symfony v2.1.2
    - Conclusion: don't install symfony/symfony v2.1.1
    - white-october/pagerfanta-bundle dev-master requires symfony/framework-bundle >=2.2,<3.0 -> satisfiable by symfony/symfony[v2.2.0, v2.2.1], symfony/framework-bundle[v2.2.0, v2.2.1].
    - white-october/pagerfanta-bundle dev-master requires symfony/framework-bundle >=2.2,<3.0 -> satisfiable by symfony/symfony[v2.2.0, v2.2.1], symfony/framework-bundle[v2.2.0, v2.2.1].
    - Can only install one of: symfony/symfony[v2.2.0, v2.1.0].
    - Can only install one of: symfony/symfony[v2.2.1, v2.1.0].
    - don't install symfony/framework-bundle v2.2.0|don't install symfony/symfony v2.1.0
    - don't install symfony/framework-bundle v2.2.1|don't install symfony/symfony v2.1.0
    - Installation request for symfony/symfony 2.1.* -> satisfiable by symfony/symfony[v2.1.0, v2.1.1, v2.1.10, v2.1.2, v2.1.3, v2.1.4, v2.1.5, v2.1.6, v2.1.7,v2.1.8, v2.1.9].
    - Installation request for white-october/pagerfanta-bundle dev-master -> satisfiable by white-october/pagerfanta-bundle[dev-master].
Run Code Online (Sandbox Code Playgroud)

Nic*_*ich 9

这里的关键部分如下:

[...]
white-october/pagerfanta-bundle dev-master requires symfony/framework-bundle >=2.2,<3.0 -> satisfiable by symfony/symfony[v2.2.0, v2.2.1], symfony/framework-bundle[v2.2.0, v2.2.1].
[...]
Run Code Online (Sandbox Code Playgroud)

哪个会导致混乱!让我解释:

虽然它通过将symfony/symfony更新为2.2.0或2.2.1来表示依赖性是可以满足的......但这个更新是不需要的!(即使更新可能是个好主意,也没有必要解决问题,并且由于BC [ 向后兼容性 ]中断而导致代码损坏)

注意:

许多bundle都有一个遗留分支 ......例如2.1.x分支支持symfony/symfony 2.1.

在盲目地将整个项目更新为新版本的根包之前,请在packagist上查找这些分支!

提示:

通常,如果composer无法获取依赖关系,这通常与您所需的一个包的最小稳定性有关.所有包装的最小稳定性通常默认为稳定.

解:

smarttech使用错误的分支(dev-master)for white-october/pagerfanta-bundle将它与symfony 2.1一起使用.2.1 的正确分支是:

"white-october/pagerfanta-bundle": "2.1.*@dev"
Run Code Online (Sandbox Code Playgroud)

... @dev稳定性标志告诉作曲家使用这个单一包的开发版本的doctrine-extensions-bundle.请阅读有关作曲家稳定性标志的更多信息.

快速查看稳定性层次结构:

dev < alpha < beta < rc < stable
Run Code Online (Sandbox Code Playgroud)

替代方案:

解决问题的另一种方法是设置作曲家的最小稳定性.

虽然不推荐这样做,因为它适用于所有约束,因此您将获得所有包的不稳定版本.

{

    [...]
    "require" :

        [...]

    "minimum-stability" : "dev",

    [...]

}
Run Code Online (Sandbox Code Playgroud)