PHP 7与Doctrine MongoDB ODM

Luk*_*uke 6 symfony doctrine-odm composer-php php-7

我有一个使用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.
Run Code Online (Sandbox Code Playgroud)

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

apt-get install php7.0-mongo
Run Code Online (Sandbox Code Playgroud)

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

sudo apt-get install -y php-pear php7.0-dev libcurl3-openssl-dev
sudo pecl install mongodb
Run Code Online (Sandbox Code Playgroud)

但是,我仍然得到无法找到mongo扩展名的错误.似乎存在版本差异,ext-mongo >=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
Run Code Online (Sandbox Code Playgroud)

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

mal*_*olm 16

在PHP7上,您无法安装mongo扩展.您可以做的是首先安装https://github.com/alcaeus/mongo-php-adapter,然后安装doctrine.

composer require alcaeus/mongo-php-adapter
Run Code Online (Sandbox Code Playgroud)

  • 这是不正确的,Doctrine Mongodb ODM目前依赖于旧的`mongo`扩展,但在PHP 7上工作得非常好,项目中安装了`mongo-php-adapter`包,以及`mongodb` php扩展. (4认同)
  • 我正在努力更新已经使用doctrine的项目,如果你不想删除doctrine,需要mongo-php-adapter并再次需要doctrine你可以使用--ignore-platform-reqs选项:`composer require alcaeus/mongo-php-adapter --ignore-platform-reqs` (3认同)

cwh*_*rer 12

在composer.json中我添加了

"provide" : {
  "ext-mongo": "*"
},
Run Code Online (Sandbox Code Playgroud)

在"require"之前,这将强制安装最新的扩展