【问题标题】:MongoDB with PHP7 and Symfony3MongoDB 与 PHP7 和 Symfony3
【发布时间】:2016-10-23 01:43:18
【问题描述】:

我对 MongoDB 有疑问。我想在我的 Symfony 应用程序中安装 MongoDBBundle 但作曲家返回错误:

Problem 1
- Installation request for doctrine/mongodb 1.4.x-dev -> satisfiable by doctrine/mongodb[1.4.x-dev].
- doctrine/mongodb 1.4.x-dev requires ext-mongo ^1.5 -> the requested PHP extension mongo is missing from your system.


 Problem 2
- doctrine/mongodb-odm 1.1.0 requires doctrine/mongodb ~1.3 -> satisfiable by doctrine/mongodb[1.3.x-dev, 1.4.x-dev].
- doctrine/mongodb-odm 1.0.0 requires doctrine/mongodb ~1.2 -> satisfiable by doctrine/mongodb[1.2.x-dev, 1.3.x-dev, 1.4.x-dev].
- doctrine/mongodb-odm 1.0.1 requires doctrine/mongodb ~1.2 -> satisfiable by doctrine/mongodb[1.2.x-dev, 1.3.x-dev, 1.4.x-dev].
- doctrine/mongodb-odm 1.0.2 requires doctrine/mongodb ~1.2 -> satisfiable by doctrine/mongodb[1.2.x-dev, 1.3.x-dev, 1.4.x-dev].
- doctrine/mongodb-odm 1.0.3 requires doctrine/mongodb ~1.2 -> satisfiable by doctrine/mongodb[1.2.x-dev, 1.3.x-dev, 1.4.x-dev].
- doctrine/mongodb-odm 1.0.4 requires doctrine/mongodb ~1.2 -> satisfiable by doctrine/mongodb[1.2.x-dev, 1.3.x-dev, 1.4.x-dev].
- doctrine/mongodb-odm 1.0.5 requires doctrine/mongodb ~1.2 -> satisfiable by doctrine/mongodb[1.2.x-dev, 1.3.x-dev, 1.4.x-dev].
- doctrine/mongodb-odm 1.0.6 requires doctrine/mongodb ~1.2 -> satisfiable by doctrine/mongodb[1.2.x-dev, 1.3.x-dev, 1.4.x-dev].
- doctrine/mongodb 1.3.x-dev requires ext-mongo ^1.5 -> the requested PHP extension mongo is missing from your system.
- doctrine/mongodb 1.2.x-dev requires ext-mongo ^1.2.12 -> the requested PHP extension mongo is missing from your system.
- doctrine/mongodb 1.4.x-dev requires ext-mongo ^1.5 -> the requested PHP extension mongo is missing from your system.
- Installation request for doctrine/mongodb-odm ~1.0 -> satisfiable by doctrine/mongodb-odm[1.0.0, 1.0.1, 1.0.2, 1.0.3, 1.0.4, 1.0.5, 1.0.6, 1.1.0].
To enable extensions, verify that they are enabled in those .ini files:
- /etc/php/7.0/cli/php.ini
- /etc/php/7.0/cli/conf.d/10-mysqlnd.ini
- /etc/php/7.0/cli/conf.d/10-opcache.ini
- /etc/php/7.0/cli/conf.d/10-pdo.ini
- /etc/php/7.0/cli/conf.d/15-xml.ini
- /etc/php/7.0/cli/conf.d/20-apcu.ini
- /etc/php/7.0/cli/conf.d/20-apcu_bc.ini
- /etc/php/7.0/cli/conf.d/20-calendar.ini
- /etc/php/7.0/cli/conf.d/20-ctype.ini
- /etc/php/7.0/cli/conf.d/20-curl.ini
- /etc/php/7.0/cli/conf.d/20-dom.ini
- /etc/php/7.0/cli/conf.d/20-exif.ini
- /etc/php/7.0/cli/conf.d/20-fileinfo.ini
- /etc/php/7.0/cli/conf.d/20-ftp.ini
- /etc/php/7.0/cli/conf.d/20-gettext.ini
- /etc/php/7.0/cli/conf.d/20-iconv.ini
- /etc/php/7.0/cli/conf.d/20-intl.ini
- /etc/php/7.0/cli/conf.d/20-json.ini
- /etc/php/7.0/cli/conf.d/20-mcrypt.ini
- /etc/php/7.0/cli/conf.d/20-mongodb.ini
- /etc/php/7.0/cli/conf.d/20-mysqli.ini
- /etc/php/7.0/cli/conf.d/20-pdo_mysql.ini
- /etc/php/7.0/cli/conf.d/20-phar.ini
- /etc/php/7.0/cli/conf.d/20-posix.ini
- /etc/php/7.0/cli/conf.d/20-readline.ini
- /etc/php/7.0/cli/conf.d/20-shmop.ini
- /etc/php/7.0/cli/conf.d/20-simplexml.ini
- /etc/php/7.0/cli/conf.d/20-sockets.ini
- /etc/php/7.0/cli/conf.d/20-sysvmsg.ini
- /etc/php/7.0/cli/conf.d/20-sysvsem.ini
- /etc/php/7.0/cli/conf.d/20-sysvshm.ini
- /etc/php/7.0/cli/conf.d/20-tokenizer.ini
- /etc/php/7.0/cli/conf.d/20-wddx.ini
- /etc/php/7.0/cli/conf.d/20-xdebug.ini
- /etc/php/7.0/cli/conf.d/20-xmlreader.ini
- /etc/php/7.0/cli/conf.d/20-xmlwriter.ini
- /etc/php/7.0/cli/conf.d/20-xsl.ini
You can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode.

我不明白这个错误,因为扩展名 MongoDB 没有丢失。我已经用这个命令安装了这个扩展: pecl 安装 mongodb

当我用php -m列出php模块加载时:

[PHP Modules]
apc
apcu
calendar
Core
ctype
curl
date
dom
exif
fileinfo
filter
ftp
gettext
hash
iconv
intl
json
libxml
mcrypt
mongodb
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
Phar
posix
readline
Reflection
session
shmop
SimpleXML
sockets
SPL
standard
sysvmsg
sysvsem
sysvshm
tokenizer
wddx
xdebug
xml
xmlreader
xmlwriter
xsl
Zend OPcache
zlib

我试试这个解决方案:

echo "extension=mongodb.so" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`

但这不是解决方案。

感谢您的帮助。

蒂博。

【问题讨论】:

    标签: php mongodb symfony php-7


    【解决方案1】:

    好的,我明白了。降级到 PHP 5.6 的步骤是:apt-get remove php7.0。 apt-get 安装 php5.6。 composer.json 的要求可以吗?

    "require": {
        "php": ">=5.5.9",
        "symfony/symfony": "3.1.*",
        "doctrine/orm": "^2.5",
        "doctrine/doctrine-bundle": "^1.6",
        "doctrine/doctrine-cache-bundle": "^1.2",
        "symfony/swiftmailer-bundle": "^2.3",
        "symfony/monolog-bundle": "^2.8",
        "symfony/polyfill-apcu": "^1.0",
        "sensio/distribution-bundle": "^5.0",
        "sensio/framework-extra-bundle": "^3.0.2",
        "incenteev/composer-parameter-handler": "^2.0",
        "friendsofsymfony/user-bundle": "2.0.x-dev",
        "mongodb/mongodb": "dev-master",
        "alcaeus/mongo-php-adapter": "dev-composer-replace",
        "doctrine/mongodb": "1.4.x-dev",
        "doctrine/mongodb-odm": "~1.0",
        "doctrine/mongodb-odm-bundle": "~3.0"
    },
    

    【讨论】:

      【解决方案2】:
      doctrine/mongodb 1.4.x-dev requires ext-mongo ^1.5
      

      ext-mongo 是传统的 MongoDB 驱动程序 (\MongoClient)。 ext-mongo 从未移植到 Zend 3 (PHP7)。 确实 在 PHP7(您通过 PECL 安装的那个)下工作的新 Mongo 驱动程序是 ext-mongodb。 MongoDB 的 Doctrine 驱动程序不支持此功能。

      你有两个选择:找一个适用于较新的 Mongo 扩展的 Doctrine 驱动程序,或者降级到 PHP 5.6 并安装 ext-mongo。

      有一个currently open issue on support for the new extension

      【讨论】:

        【解决方案3】:

        行 extension=mongo.so 在您的 CLI php.ini 文件中,并且未注释吗?可能值得检查所有 php.ini 文件。这个问题显然也出现在 Symfony 2 中:Can't install mongodb doctrine in symfony2 with composer

        【讨论】:

        • 行 extension=mongo.so 未注释 "php -m" 返回此警告: PHP 警告:模块 'mongodb' 已在第 0 行的未知中加载
        • 哼。这听起来像是两个 mongo 扩展......但从 Fiskie 的帖子来看,这似乎是 Doctrine、Mongo 和 PHP 7 的一个已知问题......
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-11-13
        • 1970-01-01
        • 1970-01-01
        • 2016-07-21
        • 1970-01-01
        • 2016-06-08
        • 2016-08-09
        相关资源
        最近更新 更多