2016-06-21 146 views
0

我有一個MongoDB的問題。我想在我的Symfony應用安裝MongoDBBundle但作曲家返回一個錯誤:MongoDB與PHP7和Symfony3

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*||"` 

但它是不是解決方案。

謝謝你的幫助。

Thibault。

回答

0
doctrine/mongodb 1.4.x-dev requires ext-mongo ^1.5 

EXT-蒙戈是傳統的MongoDB驅動程序(\ MongoClient)。 ext-mongo從未移植到Zend 3(PHP7)。新的Mongo驅動程序確實在PHP7下工作(通過PECL安裝的)是ext-mongodb。 MongoDB的Doctrine驅動程序不支持此操作。

你有兩個選擇:找到一個Doctrine驅動程序,可以使用較新的Mongo擴展,或者降級到PHP 5.6並安裝ext-mongo。

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

+0

好吧,我明白了。 – Oneill

0

是行擴展名= mongo.so在你的CLI的php.ini文件中,取消註釋?可能值得檢查所有的php.ini文件。這個問題顯然與Symfony的2想出還有:Can't install mongodb doctrine in symfony2 with composer

+0

直線延長= mongo.so未被註釋的「PHP -m」返回這樣的警告:PHP的警告:模塊「mongodb的」已加載在未知在線0 – Oneill

+0

哼。這聽起來像兩個mongo擴展...但從Fiskie的帖子,它似乎這是一個已知的問題與教條,Mongo,和PHP 7 ... –

0

好吧,我明白了。要降級到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" 
},