今天正在更新服务器安装并破坏了我的整个设置。注意到doctrine / orm~2.5.6加载2.5.11需要
doctrine / collections和所有其他包需要PHP 7.1。这就是为什么我的应用程序不再起作用了。升级到7.1现在不是一个选项,所以我们将依赖项修复为:
,“doctrine / orm”:“2.5.10” ,“教义/注释”:“~1.4.0” ,“教义/收藏”:“~1.4.0” ,“教义/共同”:“~2.7.0”
现在我的问题: doctrine / orm 2.5.11的版本号是不是错了?不应该是2.6,因为它需要在7.0中不起作用的依赖,它会破坏安装吗?
问题出现了(因为在Mac上)php版本与apache版本不同。这就是为什么我认为版本编号中的语义应该改进或者doctrine / orm包中的要求需要减少松散。
我很想知道如何在我身边做得更好。
只是谷歌会添加异常消息:Doctrine \ Common \ Annotations \ AnnotationRegistry :: registerFile()的返回值必须是Doctrine \ Common \ Annotations \ void的实例,无返回
答案 0 :(得分:0)
1。来自doctrine/orm 2.5.11
的版本号是否错误
2。不应该是2.6,因为它需要在7.0中不起作用的依赖项,它会破坏安装吗?
一句话就是semantic versioning。
Bumping任何软件包版本是第一种情况,因为作曲家不会允许安装会破坏任何软件包的软件包。
composer update
负责此当您的代码在composer update
之后运行时(当您使用^2.5
等常见版本锁时),则不需要 major ++ 版本。
如果你有PHP 7.0,并且你运行composer udpate
,那么一切都会有效。
Composer无法下载doctrine/orm 2.5.11
,因为它不符合您当地的条件。
如果您将来的任何时候将系统更新为PHP 7.1 并运行composer update
,则编译器将升级到doctrine/orm 2.5.11
(或更高版本),您的代码将正常工作
您还可以在official post in Doctrine's documentation中找到类似的解释。
您可以使用platform选项在composer.json
中强制执行优先版本。
"config": {
"platform": {
"php": "7.0"
}
}
这将更喜欢本地系统和服务器上的PHP 7.0软件包。