【问题标题】:Doctrine 2.5.11 introduces problems on PHP 7.0Doctrine 2.5.11 引入了 PHP 7.0 的问题
【发布时间】:2018-03-15 03:28:24
【问题描述】:

今天正在更新服务器安装并破坏了我的整个设置。注意到教义/orm ~2.5.6 加载了需要

的 2.5.11
  • 安装学说/集合 (v1.5.0)
  • 安装学说/注释 (v1.5.0)
  • 安装学说/common (v2.8.1)
  • 安装学说/实例化器 (1.1.0)
  • 安装学说/orm (v2.5.11)

doctrine/collections 和所有其他软件包都需要 PHP 7.1。这就是为什么我的应用程序不再工作的原因。升级到 7.1 目前不是一个选项,因此我们将依赖项修复为:

, "教义/orm" : "2.5.10" ,“教义/注释”:“~1.4.0” , "教义/收藏" : "~1.4.0" , "教义/通用" : "~2.7.0"

现在我的问题是:docteries/orm 2.5.11 的版本号没有错吗?它不应该是 2.6,因为它需要在 7.0 中不起作用的依赖项并且会破坏安装?

问题出现是因为(在 Mac 上)php 版本与 apache 版本不同。这就是为什么我认为应该改进版本编号中的语义,或者应该减少在学说/orm 包中的要求。

我有兴趣了解如何在我这边做得更好。

Just for google 会添加 Exception 消息:Return value of Doctrine\Common\Annotations\AnnotationRegistry::registerFile() must be an instance of Doctrine\Common\Annotations\void, none returned

【问题讨论】:

    标签: php doctrine-orm orm php-7 php-7.1


    【解决方案1】:

    A.关于版本的问题

    1. doctrine/orm 2.5.11的版本号是不是错了

    2.不应该是 2.6,因为它需要在 7.0 中不起作用的依赖项并且会破坏安装?


    1。 major.minor.patch

    这就是semantic versioning

    • 如果您修复某些内容或只是想标记新版本以通过 Composer 下载 - patch++
    • 如果您添加新功能 - minor++
    • 如果您删除了一些旧功能,那将无法正常工作 - 主要++

    碰撞任何软件包版本是第一种情况,因为 composer 不允许安装会破坏任何东西的软件包。

    2。 composer update 负责这个

    当你的代码在composer update之后运行时(当你使用像^2.5这样的普通版本锁时),不需要ma​​jor++版本。

    如果您有 PHP 7.0,并且运行 composer update,那么一切都会正常工作。

    Composer 不会下载doctrine/orm 2.5.11,因为它不符合您的本地条件。


    如果您将来随时将系统更新到 PHP 7.1 并运行 composer update,composer 将升级到 doctrine/orm 2.5.11(或更高版本)并且您的代码将正常工作。

    你也可以在official post in Doctrine's documentation找到类似的解释。


    B.如何在本地和服务器上使用各种版本来解决这个问题?

    您可以使用platform 选项在composer.json 中强制执行首选版本。

    "config": {
        "platform": {
            "php": "7.0"
        }
    }
    

    这将更喜欢本地系统和服务器上的 PHP 7.0 包。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-24
      • 2014-05-14
      • 1970-01-01
      • 2016-12-06
      • 1970-01-01
      • 2015-02-05
      • 1970-01-01
      相关资源
      最近更新 更多