首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >- mongodb/mongodb 1.2.0需要ext-mongodb^1.3.0 ->请求的PHP扩展mongodb在您的系统中丢失

- mongodb/mongodb 1.2.0需要ext-mongodb^1.3.0 ->请求的PHP扩展mongodb在您的系统中丢失
EN

Stack Overflow用户
提问于 2017-11-14 04:06:59
回答 5查看 29.2K关注 0票数 10

在Debian Jessie上,Apache2 --版本"0.91-ubuntu1",PHP5.6.30。

我已经尝试了很多在搜索主题时已经回答的问题。

1)我手动安装了MongoDB PHP Driver http://php.net/manual/en/mongodb.installation.manual.php

2)为了检查它是否正常工作,我创建了一个文件testMongo.php并添加了

< ?php phpinfo();?>

3)在浏览器中运行testMongo.php将生成该配置文件。

/etc/php5/apache2/php.ini

4)可以使用以下命令找到我的mongo.so文件

php -i | grep extension_dir

5)输出为:

extension_dir => /usr/lib/php5/20131226 => /usr/lib/php5/20131226

6)在这个文件中,我在"Dynamic Extensions“后面添加了

扩展=/usr/lib/php5/20131226/mongo.so

7)然后我转到Composer并执行命令行安装

代码语言:javascript
复制
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('SHA384', 'composer-setup.php') === '544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

8) Composer安装完成后,我尝试了:

代码语言:javascript
复制
php composer.phar require mongodb/mongodb

但是,这会导致以下消息:

代码语言:javascript
复制
  Problem 1
   - mongodb/mongodb 1.2.0 requires ext-mongodb ^1.3.0 -> the requested PHP extension mongodb is missing from your system.
   - mongodb/mongodb 1.2.0 requires ext-mongodb ^1.3.0 -> the requested PHP extension mongodb is missing from your system.
   - mongodb/mongodb 1.2.0 requires ext-mongodb ^1.3.0 -> the requested PHP extension mongodb is missing from your system.
   - Installation request for mongodb/mongodb ^1.2 -> satisfiable by mongodb/mongodb[1.2.0].

一些人在一篇文章中提到,我可以使用--ignore-platform-reqs It works!

当我运行时:

php5 index.php $client = new MongoDB\Client(<连接到mongo-atlas>) //支持python

我得到以下错误:

代码语言:javascript
复制
PHP Fatal error:  Class 'MongoDB\Driver\Manager' 
not found in /var/www/vendor/mongodb/mongodb/src/Client.php on line 83
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2017-11-20 01:34:30

Composer给了你正确的答案,你使用了错误的库。不要使用--ignore-platform-reqs,或者可以使用它来强制安装它。你现在需要做的是检查哪个库适合你的php版本。写

php --版本

如果你不知道你使用的是哪一个。输出应如下所示:

代码语言:javascript
复制
PHP 5.6.30-0+deb8u1 (cli) (built: Feb  8 2017 09:49:20)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies

在下面的列表中找到您的版本。

参见mongodb中的描述:PHP-Driver for mongodb

前往pecl,下载任何适合你的php版本号的版本。

在您的案例中(PHP5.6):

代码语言:javascript
复制
$ wget https://pecl.php.net/get/mongodb-1.2.11.tgz
$ tar -xvzf mongodb-1.2.11.tgz
$ cd mongodb-1.2.11/
$ phpize
$ ./configure
$ make all -j 5
$ sudo make install

现在它应该可以工作了。

您可以使用以下代码测试php mongodb连接(查找ObjectId):

代码语言:javascript
复制
<?php
# filename ConnectMongo.php
require_once __DIR__ . "/vendor/autoload.php";

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

// connect to mongodb
$manager = new MongoDB\Driver\Manager('mongodb://username:password@host');

$id = new \MongoDB\BSON\ObjectId("5a0c8e2362eb6404c2f10032");
$filter = ['_id' => $id];
$options = [];

$query = new \MongoDB\Driver\Query($filter, $options);
$rows   = $manager->executeQuery('db.collection', $query);
foreach ($rows as $document) {
    var_dump($document);
}
?>

在终端中,编写以下代码来测试连接:

$ php ConnectMongo.php

请确保您也使用composer安装,您应该不会再得到相同的错误。

票数 11
EN

Stack Overflow用户

发布于 2020-06-12 08:57:08

代码语言:javascript
复制
pecl upgrade mongodb

如果它抱怨phpize,请运行

代码语言:javascript
复制
sudo apt install php7.x-dev

将7.x替换为您的PHP版本。例如-

代码语言:javascript
复制
sudo apt install php7.3-dev
票数 4
EN

Stack Overflow用户

发布于 2021-03-07 19:20:47

尝尝这个

代码语言:javascript
复制
sudo apt-get install php-mongodb
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47272688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档