【问题标题】:PHP 7 with Doctrine MongoDB ODMPHP 7 与 Doctrine MongoDB ODM
【发布时间】:2016-08-26 03:21:20
【问题描述】:

我有一个使用 Doctrine MongoDB ODM 的 Symfony 2 应用程序,我正在尝试使用 PHP 7 运行它。

我已成功安装 PHP 7,但通过 Composer 安装依赖项让我很伤心,出现以下错误:

doctrine/mongodb 1.0.x-dev requires ext-mongo >=1.2.12,<1.7-dev -> the requested PHP extension mongo is missing from your system.

我设法通过 apt 安装了 PHP 7 mongo 扩展:

apt-get install php7.0-mongo

为了确定,我还通过 PECL 安装了 mongodb 扩展:

sudo apt-get install -y php-pear php7.0-dev libcurl3-openssl-dev
sudo pecl install mongodb

但是,我仍然收到找不到 mongo 扩展的错误消息。似乎存在版本差异,因为需要 ext-mongo &gt;=1.2.12 但只安装了 1.1.6::

$ php -i | grep mongo
/etc/php/7.0/cli/conf.d/20-mongodb.ini,
mongodb
mongodb support => enabled
mongodb version => 1.1.6
mongodb stability => stable
libmongoc version => 1.3.5
mongodb.debug => no value => no value

安装Doctrine ODM for PHP 7所需的mongo扩展的正确方法是什么?

【问题讨论】:

    标签: symfony composer-php doctrine-odm php-7


    【解决方案1】:

    为了在 MongoDB 中使用 Symfony,您需要:

    • Symfony : 显然 :-) ;
    • Symfony Doctrine MongoDB Bundle (doctrine/mongodb-odm-bundle):这个包将 Doctrine2 MongoDB Object Document Mapper (ODM) 库集成到 Symfony 中;
    • Doctrine MongoDB Object Document Mapper (doctrine/mongodb-odm):为 MongoDB 提供 PHP 对象映射功能的库;
    • MongoDB Adapter (alcaeus/mongo-php-adapter):提供建立在mongo-php-library之上的ext-mongo API,兼容PHP 7;
    • MongoDB 驱动程序库 (mongodb/mongodb):围绕 PHP 的低级驱动程序提供高级抽象;
    • MongoDB PHP 扩展:PHP 和 HHVM 的低级驱动程序扩展。请注意 MongoDB 驱动程序。不要使用旧版 MongoDB 驱动程序 (http://php.net/manual/en/book.mongo.php)。

    您可以按照此处的说明进行操作: "How to install Symfony3 with MongoDB"

    它是为 Symfony3 编写的,但对于 Symfony2 是同样的问题。问题是 PHP7 + mongodb 驱动程序 + Doctrine。

    【讨论】:

      【解决方案2】:

      在 composer.json 我添加了

      "provide" : {
        "ext-mongo": "*"
      },
      

      在“require”之前,这会强制安装最新的扩展

      【讨论】:

        【解决方案3】:

        在 PHP7 上你不能安装 mongo 扩展。你可以做的是,先安装https://github.com/alcaeus/mongo-php-adapter,然后安装学说。

        composer require alcaeus/mongo-php-adapter
        

        【讨论】:

        • 啊。好的。所以,如果我理解正确,截至撰写本文时,Doctrine MongoDB ODM 不适用于 PHP 7。对吗?
        • 这是不正确的,目前 Doctrine Mongodb ODM 依赖于旧的 mongo 扩展,但在 PHP 7 上运行良好,在项目中安装了 mongo-php-adapter 包和 mongodb php 扩展.
        • 是的。你说得对,有一个“第三方”解决方法,但 Doctrine MongoDB ODM 本身似乎不适用于 PHP 7。我担心mongo-php-adapter 的“已知问题”,但我显然必须先尝试...感谢您的回答。
        • 我正在更新一个已经使用了学说的项目,如果你不想删除学说,需要 mongo-php-adapter 并再次需要学说,你可以使用 --ignore-platform -reqs 选项:composer require alcaeus/mongo-php-adapter --ignore-platform-reqs
        猜你喜欢
        • 2015-04-10
        • 1970-01-01
        • 2017-08-13
        • 1970-01-01
        • 2017-08-14
        • 1970-01-01
        • 1970-01-01
        • 2014-04-19
        • 2016-06-26
        相关资源
        最近更新 更多