Composer无法在Ubuntu安装MongoDB。

16

我运行了composer require mongodb/mongodb,但是出现了以下错误:

错误信息如下:

- mongodb/mongodb 1.0.1 requires ext-mongodb ^1.1.0 -> the requested PHP extension mongodb is missing from your system.
- mongodb/mongodb 1.0.0 requires ext-mongodb ^1.1.0 -> the requested PHP extension mongodb is missing from your system.
- Installation request for mongodb/mongodb ^1.0 -> satisfiable by mongodb/mongodb[1.0.0, 1.0.1].
我尝试了:composer show -p 然后它给了我:
......
ext-iconv           0         The iconv PHP extension
ext-mcrypt          0         The mcrypt PHP extension
ext-mhash           0         The mhash PHP extension
ext-mongo           1.6.12    The mongo PHP extension
ext-mysql           1.0       The mysql PHP extension
ext-mysqli          0.1       The mysqli PHP extension
......

为什么会出现错误?

php -m

..... 
libxml 
mbstring 
mcrypt 
mhash 
mongo 
mysql 
mysqli 
openssl 
pcntl
pcre
 PDO 
 .....

我正在使用Ubuntu 14.04 LTS操作系统

3个回答

18
  1. 安装php驱动程序 $ sudo pecl install mongodb
  2. 创建扩展文件 $ sudo nano /etc/php/*version*/mods-available/mongodb.ini 并写入以下内容:extension=mongodb.so
  3. 为此文件创建符号链接 $ sudo ln -sv /etc/php/*version*/mods-available/mongodb.ini /etc/php/*version*/apache2/conf.d/20-mongodb.ini
  4. 为此文件创建另一个符号链接 $ sudo ln -sv /etc/php/*version*/mods-available/mongodb.ini /etc/php/*version*/cli/conf.d/20-mongodb.ini
  5. 重新启动apache或所使用的服务器 $ sudo service apache2 restart

可能需要重新安装jenssegers/mongodb: $ composer require jenssegers/mongodb


我完成了所有步骤,但仍无法使用PHP连接到mongodb。错误是PHP致命错误:未找到'MongoDB \\ Client'类 - void
这意味着扩展未正确加载。首先检查php是否正在加载扩展,尝试使用“$ php -i”命令并检查mongo扩展:'MongoDB支持=>已启用 版本=>1.6.10 流支持=>已启用 SSL支持=>已启用' - J.C. Gras
在Ubuntu 16.4上完美运行。 - cmac
我只完成了这一步骤: 在 /etc/php/7.1/cli/conf.d/ 目录下创建文件 20-mongodb.ini。 - AturSams

7

如果想要快速简便,只需要执行以下命令:

  • sudo pecl install mongodb
  • sudo nano /etc/php5/apache2/php.ini,在文件底部或者其他位置添加:

; mongodb extension=mongodb.so

  • sudo nano /etc/php5/cli/php.ini,在文件底部或者其他位置添加:

; mongodb extension=mongodb.so

  • 为了保险起见,重启 Web 服务器(CLI 不需要):sudo service apache2 restart

这对我来说是正确的答案。Composer似乎使用php.ini的CLI版本。 - Merlevede

4

i'm run:

sudo apt-get install libpcre3-dev

那么:

pecl install mongodb

cli/php.ini 文件的底部添加 extension=mongodb.so

感谢您提供更直接的答案,这让我省了不少心思 :) - jrran90

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接