Php Composer显示2个兼容软件包(原始)之间的冲突

Php Composer显示2个兼容软件包(原始)之间的冲突,php,symfony,composer-php,Php,Symfony,Composer Php,尝试composer安装我的依赖项时出错。与编写器更新相同的错误 它说symfony/web服务器捆绑包4.3.3和symfony 3.4之间存在冲突,但这些软件包应该是兼容的: 以下是我的控制台输出: $composer安装--忽略平台要求 弃用警告:您的包名为/。无效,它应具有供应商名称、正斜杠和包名称。供应商和软件包名称可以用-分隔。或者!。全名应与“[a-z0-9]([┱]?[a-z0-9]+)*/[a-z0-9]([┱]?[a-z0-9]+)*”匹配。请确保修复此问题,因为Co

尝试
composer安装我的依赖项时出错。与编写器更新相同的错误

它说symfony/web服务器捆绑包4.3.3和symfony 3.4之间存在冲突,但这些软件包应该是兼容的:

以下是我的控制台输出:

$composer安装--忽略平台要求
弃用警告:您的包名为/。无效,它应具有供应商名称、正斜杠和包名称。供应商和软件包名称可以用-分隔。或者!。全名应与“[a-z0-9]([┱]?[a-z0-9]+)*/[a-z0-9]([┱]?[a-z0-9]+)*”匹配。请确保修复此问题,因为Composer 2.0将出现错误。
弃用警告:require.beberlei/DoctrineExtensions无效,它不应包含大写字符。请改用beberlei/doctrineextensions。请确保修复此问题,因为Composer 2.0将出现错误。
使用包信息加载composer存储库
从锁文件安装依赖项(包括需要开发)
无法将您的需求解析为可安装的软件包集。
问题1
-symfony/symfony v3.4.30的安装请求->可由symfony/symfony[v3.4.30]满足。
-不安装symfony/web服务器捆绑包v4.3.3 |不安装symfony/symfony v3.4.30
-symfony/web服务器捆绑包v4.3.3的安装请求->可由symfony/web服务器捆绑包[v4.3.3]满足。
这是我的composer.json:

{
    "name": "theredled/.",
    "license": "proprietary",
    "type": "project",
    "autoload": {
        "psr-4": {
            "": "src/"
        },
        "classmap": [
            "app/AppKernel.php",
            "app/AppCache.php"
        ]
    },
    "autoload-dev": {
          "psr-4": {
              "App\\Tests\\": "tests/"
          }
      },
    "require": {
        "php": ">=7.1.0",
        "symfony/symfony": "3.4.*",
        "doctrine/orm": "~2.6",
        "doctrine/doctrine-bundle": "~1.9",
        "symfony/swiftmailer-bundle": "~3.2",
        "symfony/monolog-bundle": "~3.3",
        "sensio/distribution-bundle": "~5.0",
        "incenteev/composer-parameter-handler": "~2.1",
        "twig/extensions": "^1.5",
        "liip/imagine-bundle": "^2.1",
        "spe/filesize-extension-bundle": "~1.0.0",
        "doctrine/doctrine-migrations-bundle": "^1.3",
        "beberlei/DoctrineExtensions": "^1.1",
        "excelwebzone/recaptcha-bundle": "^1.5",
        "knplabs/knp-snappy-bundle": "^1.5",
        "knplabs/knp-paginator-bundle": "^2.8",
        "debesha/doctrine-hydration-profiler-bundle": "^1.3",
        "xmon/color-picker-type-bundle": "^1.0",
        "symfony/assetic-bundle": "^2.8",
        "symfony/console": "~3.4",
        "eightpoints/guzzle-bundle": "^7.4",
        "symfony/webpack-encore-bundle": "^1.6",
        "sentry/sentry-symfony": "^2.1",
        "cocur/slugify": "^3.2"
    },
    "require-dev": {
        "sensio/generator-bundle": "~3.0",
        "symfony/browser-kit": "^4.3",
        "symfony/css-selector": "^4.3",
        "symfony/phpunit-bridge": "^4.3",
        "onurb/doctrine-yuml-bundle": "1.1.5",
        "phpunit/php-code-coverage": "^6.1",
        "hautelook/alice-bundle": "^2.5",
        "doctrine/data-fixtures": "^1.3",
        "symfony/web-server-bundle": "^4.3"
    },
    "scripts": {
        "post-install-cmd": [
            "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
            "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::prepareDeploymentTarget"
        ],
        "post-update-cmd": [
            "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
            "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::prepareDeploymentTarget"
        ]
    },
    "config": {
        "bin-dir": "bin",
        "platform": {
            "php": "7.1.11"
        }
    },
    "extra": {
        "symfony-app-dir": "app",
        "symfony-web-dir": "web",
        "symfony-assets-install": "relative",
        "incenteev-parameters": {
            "file": "app/config/parameters.yml"
        },
        "symfony": {
            "allow-contrib": "true"
        }
    }
}
有什么想法吗?

正如我在中所描述的,您确实会收到此错误消息,因为
symfony/symfony
在其完全相同的版本中充当了
symfony/web服务器包的替代品,因为这行代码:

composer文档将准确地告诉您这一点,并以Symfony为例解释
replace
部分:

这对于包含子包的包也很有用,例如 示例主symfony/symfony包包含所有symfony 组件也可作为单独的软件包提供。如果你 需要主包,它将自动满足任何要求 一个单独的组件,因为它取代了它们

资料来源:

因此,使用您的
composer.json
命令composer在
4.3.3
版本安装
symfony/web服务器包
,并在
3.4.30
版本安装
symfony/web服务器包
(通过请求在版本
3.4.30
上安装
symfony/symfony
,即替换该软件包),composer最终处于不兼容状态,正如错误所解释的,同时在两个不同版本上安装软件包

- don't install symfony/web-server-bundle v4.3.3|don't install symfony/symfony v3.4.30
- Installation request for symfony/web-server-bundle v4.3.3 -> satisfiable by symfony/web-server-bundle[v4.3.3].
=>不安装
symfony/web服务器捆绑包实际上就是这个意思:您实际上不需要它,它已经是
symfony/symfony
的一部分了

在这里,您有三个选项:

  • 您在
    composer.json
    中删除了对
    symfony/web服务器捆绑包的要求(但这意味着您必须使用
    symfony/symfony
    提供的
    3.4.30
    版本的软件包)
  • 您可以将
    symfony/symfony
    包升级到
    4.3.3
    (仍然将
    symfony/web服务器包的要求从您的
    composer.json
    中删除,因为
    symfony/symfony
    确实取代了它)
  • 您需要一个接一个的
    symfony/*
    软件包,但不能通过“超级软件包”
    symfony/symfony

    从长远来看,这需要处理更多的工作和更多可能的不兼容性,但这是在版本
    ^4.0
    中仍有其他symfony软件包时,在版本
    ^3.0
    中拥有
    symfony/web服务器捆绑包的唯一方法
    一个例子是替换
    composer.json的这一行:

    "symfony/symfony": "3.4.*",
    

    这是我通过复制创建的,在这里我用实际的
    symfony/symfony
    版本替换了
    的“self.version”
    ,最后删除了包
    symfony/web服务器捆绑包,因为您已经在另一个版本上需要它了

  • 至于您对
    symfony/web服务器捆绑程序
    composer.json
    的误解,此软件包确实与版本为
    ^4.0
    的symfony软件包兼容,如下所示:

    • symfony/config
    • symfony/控制台
    • symfony/依赖注入
    • symfony/http内核
    • symfony/polyfill ctype
    • symfony/过程

    但是,与捆绑的“超级软件包”
    symfony/symfony

    中确实不存在,这有什么问题吗?symfony/web服务器捆绑包4.3.3需要symfony 3.4(),所以不,我不太清楚。很酷,你选择关闭我的问题(?),但我仍然没有解决方案…@yivi“您需要更深入地了解递归依赖关系”我如何做到这一点?只有
    composer require | update
    存在
    --preference lower
    标志。我还建议在尝试其他操作之前,使用
    composer self update
    将composer更新为最新版本。
    "symfony/asset": "3.4.*",
    "symfony/browser-kit": "3.4.*",
    "symfony/cache": "3.4.*",
    "symfony/class-loader": "3.4.*",
    "symfony/config": "3.4.*",
    "symfony/console": "3.4.*",
    "symfony/css-selector": "3.4.*",
    "symfony/dependency-injection": "3.4.*",
    "symfony/debug": "3.4.*",
    "symfony/debug-bundle": "3.4.*",
    "symfony/doctrine-bridge": "3.4.*",
    "symfony/dom-crawler": "3.4.*",
    "symfony/dotenv": "3.4.*",
    "symfony/event-dispatcher": "3.4.*",
    "symfony/expression-language": "3.4.*",
    "symfony/filesystem": "3.4.*",
    "symfony/finder": "3.4.*",
    "symfony/form": "3.4.*",
    "symfony/framework-bundle": "3.4.*",
    "symfony/http-foundation": "3.4.*",
    "symfony/http-kernel": "3.4.*",
    "symfony/inflector": "3.4.*",
    "symfony/intl": "3.4.*",
    "symfony/ldap": "3.4.*",
    "symfony/lock": "3.4.*",
    "symfony/monolog-bridge": "3.4.*",
    "symfony/options-resolver": "3.4.*",
    "symfony/process": "3.4.*",
    "symfony/property-access": "3.4.*",
    "symfony/property-info": "3.4.*",
    "symfony/proxy-manager-bridge": "3.4.*",
    "symfony/routing": "3.4.*",
    "symfony/security": "3.4.*",
    "symfony/security-core": "3.4.*",
    "symfony/security-csrf": "3.4.*",
    "symfony/security-guard": "3.4.*",
    "symfony/security-http": "3.4.*",
    "symfony/security-bundle": "3.4.*",
    "symfony/serializer": "3.4.*",
    "symfony/stopwatch": "3.4.*",
    "symfony/templating": "3.4.*",
    "symfony/translation": "3.4.*",
    "symfony/twig-bridge": "3.4.*",
    "symfony/twig-bundle": "3.4.*",
    "symfony/validator": "3.4.*",
    "symfony/var-dumper": "3.4.*",
    "symfony/web-link": "3.4.*",
    "symfony/web-profiler-bundle": "3.4.*",
    "symfony/workflow": "3.4.*",
    "symfony/yaml": "3.4.*"