phpunit 5.6.4没有';t在PHP5.6中使用条令';s通过composer的依赖关系
我在composer安装依赖项时遇到问题。 我们使用的php版本是5.6.24。 在安装phpunit 5.6.4时,我们需要安装php^7。这是我们的部分composer.lock,需要并安装phpunitphpunit 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",
"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
和供应商
文件夹,然后尝试运行ingcomposer安装
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中?