【问题标题】:Why has Composer installed a version of a package that seems to conflict with the requirements?为什么 Composer 安装了似乎与要求冲突的软件包版本?
【发布时间】:2017-12-11 15:44:12
【问题描述】:

这看起来是一个简单的问题,但我无法解释发生了什么。

在我的 Symfony 项目的 composer.json 中,twig 版本被指定为

php c:\php\composer\composer.phar depends -t "twig/twig"
twig/twig v2.4.3 Twig, the flexible, fast, and secure template language for PHP
|--symfony/framework-standard-edition dev-develop (requires twig/twig <2.0)
|--symfony/symfony v2.8.24 (requires twig/twig ~1.34|~2.4)
|  `--symfony/framework-standard-edition dev-develop (requires symfony/symfony 2.8.*)
`--twig/extensions v1.5.1 (requires twig/twig ~1.27|~2.0)
   `--symfony/framework-standard-edition dev-develop (requires twig/extensions ^1.3)

composer.json 的相关块:

"require": {
    "php": ">=5.3.3",
    "symfony/symfony": "2.8.*",
    "doctrine/dbal": "2.5.*",
    "doctrine/orm": "2.5.*",
    "doctrine/doctrine-bundle": "~1.2",
    "twig/twig": "<2.0",
    "twig/extensions": "^1.3",
    etc
}

在我看来,symfony/symfonytwig/extensions 软件包的要求与项目的要求相结合,将导致 Twig 的最高 1.x 版本 1.34.4,但事实并非如此.为什么?

编辑:

作曲家 1.4.2

完整的composer.json

{
    "name": "symfony/framework-standard-edition",
    "license": "MIT",
    "type": "project",
    "description": "The \"Symfony Standard Edition\" distribution",
    "autoload": {
        "psr-0": { "": "src/", "SymfonyStandard": "app/" }
    },
    "require": {
        "php": ">=5.3.3",
        "symfony/symfony": "2.8.*",
        "doctrine/dbal": "2.5.*",
        "doctrine/orm": "2.5.*",
        "doctrine/doctrine-bundle": "~1.2",
        "twig/twig": "<2.0",
        "twig/extensions": "^1.3",
        "symfony/assetic-bundle": "^2.8",
        "symfony/swiftmailer-bundle": "~2.3",
        "symfony/monolog-bundle": "~2.4",
        "sensio/distribution-bundle": "~3.0",
        "sensio/framework-extra-bundle": "~3.0",
        "incenteev/composer-parameter-handler": "~2.0",
        "beberlei/DoctrineExtensions": "^1.0",
        "royopa/fpdf-symfony2": "^1.0",
        "liuggio/excelbundle": "^2.0",
        "patchwork/jsqueeze": "^2.0",
        "leafo/scssphp": "^0.6.5",
        "doctrine/doctrine-migrations-bundle": "^1.0",
        "ocramius/proxy-manager": "~2.0.0",
        "aws/aws-sdk-php-symfony": "^1.2"
    },
    "require-dev": {
        "sensio/generator-bundle": "~2.3",
        "symfony/phpunit-bridge": "^3.1",
        "deployer/deployer": "^3.3"
    },
    "scripts": {
        "post-root-package-install": [
            "SymfonyStandard\\Composer::hookRootPackageInstall"
        ],
        "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",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::removeSymfonyStandardFiles"
        ],
        "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",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::removeSymfonyStandardFiles"
        ]
    },
    "config": {
        "bin-dir": "bin"
    },
    "extra": {
        "symfony-app-dir": "app",
        "symfony-web-dir": "web",
        "incenteev-parameters": {
            "file": "app/config/parameters.yml"
        },
        "branch-alias": {
            "dev-master": "2.5-dev"
        }
    }
}

编辑 2:

删除 composer.lock 并完全更新和重新安装给了我我认为我应该得到的东西!

【问题讨论】:

    标签: symfony twig composer-php


    【解决方案1】:

    你用的是什么版本的作曲家?

    我在 Linux Mint 17 上使用 php 5.5 和 composer 1.3.2 测试了该 json 文件,安装的 twig 版本是正确的(twig/twig - v1.34.4)。

    您可以尝试粘贴完整的 composer.json 文件吗?

    另外,我建议删除 composer.lock 文件和供应商文件夹的所有内容,然后再次尝试安装。

    【讨论】:

    • 感谢您的关注,刚刚更新了更多信息。将尝试重新安装完整的软件包
    • 我不得不删除这个包: "ocramius/proxy-manager": "~2.0.0" 因为它需要 php 7 并且不能在我的机器上运行。但除此之外,安装工作正常,安装的树枝包仍然是正确的:1.34.4 (2017-07-04)
    • 再次感谢 - 我已经完成了完整的刷新,现在我也获得了 1.34.4!所以不知道为什么会发生这种情况,特别是为什么“depends”命令可以给出两个不同的答案而没有任何直接相关的信息改变!我会把这归结为一个怪癖,然后继续。干杯!
    猜你喜欢
    • 2021-09-21
    • 2019-10-06
    • 2020-05-11
    • 2019-07-27
    • 2021-05-27
    • 1970-01-01
    • 2020-11-07
    • 2021-04-20
    • 1970-01-01
    相关资源
    最近更新 更多