- mongodb/mongodb 1.2.0 需要 ext-mongodb ^1.3.0 -> 您的系统中缺少请求的 PHP 扩展 mongodb
Posted
技术标签:
【中文标题】- mongodb/mongodb 1.2.0 需要 ext-mongodb ^1.3.0 -> 您的系统中缺少请求的 PHP 扩展 mongodb【英文标题】:- mongodb/mongodb 1.2.0 requires ext-mongodb ^1.3.0 -> the requested PHP extension mongodb is missing from your system 【发布时间】:2018-04-26 15:05:17 【问题描述】:在 Debian Jessie 上,Apache2 --version "0.91-ubuntu1",php 5.6.30。
我尝试了很多在搜索主题时已经回答的问题。
1) 我手动安装了 MongoDB PHP 驱动程序 http://php.net/manual/en/mongodb.installation.manual.php
2) 为了检查它是否有效,我创建了一个文件 testMongo.php 并添加了
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) 在这个文件中,我在“动态扩展”之后添加了
extension=/usr/lib/php5/20131226/mongo.so
7) 然后我转到Composer 并进行了命令行安装
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 后,我尝试了:
php composer.phar require mongodb/mongodb
但是这会导致以下消息:
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 有效!
当我跑步时:
# php5 索引.php$client = new MongoDB\Client(
) //与python一起工作
我收到以下错误:
PHP Fatal error: Class 'MongoDB\Driver\Manager'
not found in /var/www/vendor/mongodb/mongodb/src/Client.php on line 83
【问题讨论】:
【参考方案1】:Composer 在那里给了你正确的答案,你使用了错误的库。 不要使用--ignore-platform-reqs,或者你可以强制安装它。 您现在需要做的是检查哪个库适合您的 php 版本。写
php --版本
如果您不知道您使用的是哪一个。输出应该是这样的:
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):
$ 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):
<?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 进行安装,您应该不会再遇到同样的错误。
【讨论】:
你好@mattis,你在php 7.0中试过这个例子吗。 我不记得具体的了,但我想我记得。上面的例子也表明 7.1 可用。 我在 7.0 wamp 中实现这个例子。它不工作。 好的。这是一个话题,因为这里的这个问题假设 Linux (Debian Jessie)。您可能可以在 Windows 中解决此问题,但如果您打算经常这样做,我建议您使用 Linux 发行版。我总是使用digitalocean.com 创建一个简单的 linux droplet,并安装了所有必要的应用程序。【参考方案2】:运行
pecl upgrade mongodb
如果它抱怨phpize,运行
sudo apt install php7.x-dev
将 7.x 替换为您的 PHP 版本。例如。 -
sudo apt install php7.3-dev
【讨论】:
谢谢你,你节省了我的时间。 Pecl upgrde mongodb 成功了【参考方案3】:试试这个
sudo apt-get install php-mongodb
【讨论】:
【参考方案4】:你可以试试这个标志: --ignore-platform-reqs
【讨论】:
这并不能解决问题。它只会隐藏错误并继续。以上是关于- mongodb/mongodb 1.2.0 需要 ext-mongodb ^1.3.0 -> 您的系统中缺少请求的 PHP 扩展 mongodb的主要内容,如果未能解决你的问题,请参考以下文章
[linux][MongoDB] mongodb学习:MongoDB安装管理工具
Nodejs学习笔记--- 与MongoDB的交互(mongodb/node-mongodb-native)MongoDB入门