phpunit 5.6.4在php 5.6中无法通过composer进行doctrine的依赖

时间:2017-09-28 13:14:56

标签: php cakephp doctrine phpunit

我有一个问题是作曲家安装依赖项。 我们使用的是版本5.6.24的php。 安装phpunit 5.6.4时,我们安装doctrine需要php ^ 7。这是我们在require和install phpunit之后的部分composer.lock。

"packages-dev": [
    {
        "name": "doctrine/instantiator",
        "version": "1.1.0",
        "source": {
            "type": "git",
            "url": "https://github.com/doctrine/instantiator.git",
            "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda"
        },
        "dist": {
            "type": "zip",
            "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda",
            "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda",
            "shasum": ""
        },
        "require": {
            "php": "^7.1"
        },

为什么它会导致我们如何解决从PHP 7到5的这种依赖? 我想,有可能在php 5中使用phpunit 5.6.4作为https://packagist.org/packages/phpunit/phpunit#5.6.4 show。 (我们使用cakephp 2.10.3取决于sebastian / exporter 1.2。所以我们只能使用5.6.4 phpunit版本。)

我们使用docker,所以我们按照命令安装库。

docker run --rm -it -v $(pwd):/app composer:1.4.1 require --dev phpunit/phpunit:"5.6.4" --ignore-platform-reqs --update-with-dependencies 

1 个答案:

答案 0 :(得分:0)

此问题是由于教条版本(see http://doctrine-project.org/2017/07/25/php-7.1-requirement-and-composer.html)与phpdocumentor / reflection-docblock不兼容而导致的。我可以覆盖无效版本以使用命令composer

require (or --dev) package:$correct_version

当然,还有docker环境。

Composer文件可能具有不明确的依赖项匹配设置,如^,〜运算符,因此如果依赖项所需的库安装更改了以前更新过的不兼容的需求,则依赖性将被破坏。所以我们需要在composer.json中隐式定义它们的正确版本。感谢@ TonyChiboucas的评论add your own requirement definition。它成为解决我的问题的线索。