phpunit 5.6.4没有';t在PHP5.6中使用条令';s通过composer的依赖关系

phpunit 5.6.4没有';t在PHP5.6中使用条令';s通过composer的依赖关系,php,cakephp,doctrine,phpunit,Php,Cakephp,Doctrine,Phpunit,我在composer安装依赖项时遇到问题。 我们使用的php版本是5.6.24。 在安装phpunit 5.6.4时,我们需要安装php^7。这是我们的部分composer.lock,需要并安装phpunit "packages-dev": [ { "name": "doctrine/instantiator", "version": "1.1.0", "source": { "type": "git",

我在composer安装依赖项时遇到问题。 我们使用的php版本是5.6.24。 在安装phpunit 5.6.4时,我们需要安装php^7。这是我们的部分composer.lock,需要并安装phpunit

"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"
        },
为什么会导致这种依赖,我们如何从PHP7修复到PHP5? 正如我所想,在PHP5中使用phpunit 5.6.4是可能的。(我们使用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 

这个问题是由条令版本和phpdocumentor/reflection docblock不兼容引起的,如图所示。我可以覆盖无效版本以使用命令生成器

require (or --dev) package:$correct_version
当然,还有docker环境


Composer文件可能具有不明确的依赖项匹配设置,如^、~运算符,因此,如果依赖项更改要求(之前已更新不兼容)要求安装库,则依赖项将被破坏。因此,我们需要在composer.json中隐式定义其正确版本。感谢@TonyChiboucas的评论
添加您自己的需求定义
。它成为解决我的问题的线索。

这个问题是由条令版本和phpdocumentor/reflection docblock不兼容引起的,正如它所示。我可以覆盖无效版本以使用命令生成器

require (or --dev) package:$correct_version
当然,还有docker环境


Composer文件可能具有不明确的依赖项匹配设置,如^、~运算符,因此,如果依赖项更改要求(之前已更新不兼容)要求安装库,则依赖项将被破坏。因此,我们需要在composer.json中隐式定义其正确版本。感谢@TonyChiboucas的评论
添加您自己的需求定义
。它成为解决我问题的线索。

删除
composer.lock
vendor
文件夹,然后尝试运行
composer install
again@delboy1978uk感谢您的评论,但没有任何更改。实际上,我们部分运行phpunit,但测试有时会失败,并发出错误致命错误:语法错误,意外“:”,期待“;”或者[/vendors/doctor/instantiator/src/doctor/instantiator/instantiator.php,第95行]中的“{”,或可能出现警告。请确保运行composer的计算机上没有可用的php7。@TonyChiboucas可能是的,因为我们使用的是docker image composer:1.4.1(来自官方repogitory)使用的是php版本5.6.24。我注意到phpunit 5.6.4的依赖项中不包含条令/实例化器,请删除它,然后我的所有测试套件都通过。我会这样做尽管事实如此,我不知道为什么要安装它。因此,我想知道如何无法安装非依赖项的软件包。这里有人可以帮忙吗?@tkowt,何不简单地将您自己的
条令/实例化器
的需求定义添加到composer.json?删除
composer.lock
供应商
文件夹,然后尝试运行ing
composer安装
again@delboy1978uk感谢您的评论,但没有任何更改。实际上,我们部分运行phpunit,但测试有时会失败,并发出错误致命错误:语法错误,意外的“:”,在[/vendors/doctor/instantiator/src/doctor/instantiator/instantiator.php,第95行]中应为“;”或“{”,或可能出现警告。请确保运行composer的计算机上没有可用的php7。@TonyChiboucas可能是的,因为我们使用的是docker image composer:1.4.1(来自官方repogitory)使用的是php版本5.6.24。我注意到phpunit 5.6.4的依赖项中不包含条令/实例化器,请删除它,然后我的所有测试套件都通过。我会这样做尽管事实如此,我不知道为什么要安装它。因此,我想知道如何才能安装非依赖项的包。这里有人可以帮忙吗?@tkowt,何不简单地将您自己的
条令/实例化器
的需求定义添加到composer.json中?