composer.json中的特定提交版本产生奇怪的需求

时间:2018-08-27 18:55:42

标签: php composer-php

我正在尝试使用旧的PHP源代码。 composer.json包含:

{
    "minimum-stability": "dev",
    "name": "symfony/framework-standard-edition",
    "description": "The \"Symfony Standard Edition\" distribution",
    "autoload": {
        "psr-0": { "": "src/" }
    },
    "require": {
        "php": ">=5.3.3",
        "symfony/symfony": "v2.2.4",
        [...]
        "friendsofsymfony/user-bundle": "v1.3.1",
        "doctrine/data-fixtures" : "dev-master#b4a135c",
        [...]

但是当我运行php composer.phar install时,我得到了:

  Problem 1
    - Installation request for doctrine/data-fixtures dev-master#b4a135c -> satisfiable by doctrine/data-fixtures[dev-master].
    - doctrine/data-fixtures dev-master requires php ^7.1 -> your PHP version (5.6.37) does not satisfy that requirement.

doctrine/data-fixtures的提交要求为here

为什么作曲家谈论的是PHP ^7.1?如何真正使用此软件包的b4a135c版?

1 个答案:

答案 0 :(得分:1)

使用此类约束时,需求来自分支。因此,对于dev-master#b4a135c需求检查了master分支,因此这是^7.1需求的来源。

快速的解决方法是使用不同的分支:

"doctrine/data-fixtures": "1.0.x-dev#b4a135c",

但是您应该真正地修复它并使用实际的约束和发布-指向指定的提交基本上是hack,应该避免。长期依赖它可能会在某些时候带来一些问题。此限制和可能的问题是documented

  

尽管有时这很方便,但从长远来看,这不应该是您使用软件包的方式,因为它存在技术限制。仍将从您在哈希之前指定的分支名称中读取composer.json元数据。因此,在某些情况下,这不是一个可行的解决方法,您应该始终尝试尽快切换到带标签的发行版。