【问题标题】:Class 'MongoDB\Client' not found, mongodb extension installed找不到类 'MongoDB\Client',安装了 mongodb 扩展
【发布时间】:2017-04-19 16:33:54
【问题描述】:

我尝试执行以下代码创建新的 mongo 连接

$m = new MongoDB\Client();

我得到了这个错误:

致命错误:找不到类“MongoDB\Client”

我想我已经正确安装了 MongoDB 扩展 (将 php_mongodb.dll 复制到 ext 文件夹并使用 extension=php_mongodb.dll 更新 php.ini)。

以下代码确认已加载:

echo extension_loaded("mongodb") ? "loaded\n" : "not loaded\n";

我仍然收到同样的错误。

这里是 phpinfo()

感谢您的所有帮助。谢谢!

【问题讨论】:

  • 您是否包含自动加载器?
  • 你能不能再具体点,我是新手
  • 旧的 MongoDB 分机实际上已被弃用,因此您很可能得到了新的
  • 那么你如何卸载旧版本,或者只是安装新版本并自动替换

标签: php mongodb database-connection


【解决方案1】:

如果您使用的是 PHP 的最新 MongoDB 扩展,MongoDB\Driver\Manager 是该扩展的主要入口点。

这是使用最新扩展检索数据的示例代码。

假设您在testDb 中有testColl 集合。您可以使用扩展的MongoDB\Driver\Query 类检索数据。

// Manager Class
$manager = new MongoDB\Driver\Manager("mongodb://localhost:27017");

// Query Class
$query = new MongoDB\Driver\Query(array('age' => 30));

// Output of the executeQuery will be object of MongoDB\Driver\Cursor class
$cursor = $manager->executeQuery('testDb.testColl', $query);

// Convert cursor to Array and print result
print_r($cursor->toArray());

输出:

Array
(
    [0] => stdClass Object
        (
            [_id] => MongoDB\BSON\ObjectID Object
                (
                    [oid] => 5848f1394cea9483b430d5d2
                )

            [name] => XXXX
            [age] => 30
        )

)

【讨论】:

  • 谢谢!这个新的 MongoDB 分机让我很困惑,所以我切换回旧的 mongo。 :D
  • 太糟糕了,官方文档中没有记录。使用作曲家(如记录)是一种方式,而不是唯一的方式:)
【解决方案2】:

我使用的是 PHP 7.1.9,但遇到了这个问题。通过删除并重新安装mongodb/mongodb解决它

composer remove mongodb/mongodb
composer require mongodb/mongodb

另外,如果您使用的是 Dreamweaver,请不要将 vendor 文件夹放在服务器副本中。

安装后,我现在可以使用MongoDB\Client了。

mongodb API 版本 1.3,Mongodb 扩展 1.4

【讨论】:

    【解决方案3】:

    我也遇到了同样的情况,请检查您服务器上安装的 php 版本。 您必须使用 php 版本 5.6。检查 apche 错误日志以获得更准确的错误详细信息。

    【讨论】:

    • 是的,我也使用 5.6 版。互联网上所有类似的问题让我更加困惑:(
    • 你是如何安装的?
    • 而且您的 php 版本也有可能发生变化,请检查一下。
    • 感谢您的帮助。我设法切换回旧版本,它是 mongo 扩展而不是 MongoDB 扩展。现在感觉舒服多了。
    【解决方案4】:

    简单的安装方式

    sudo apt-get install php-mongodb
    

    安装mongo后

    【讨论】:

      【解决方案5】:

      对于 Apache 和 Nginx 的显示不同。

      虽然这篇文章很旧,但我帮助这可能会帮助某人。我最近遇到了同样的问题。对我来说,它是不同的 php.ini。

      我一直将 mongoextension 放入 /cli/php.ini。

      虽然当我运行<?php phpinfo() ?> 时,我发现在我的情况下加载的配置位于/fpm/php.ini 中。这是因为我用 fpm 取消了 Nginx。

      【讨论】:

        【解决方案6】:

        90% 的时间是您的 Mongodb 扩展配置。请检查 php.ini

        【讨论】:

          【解决方案7】:

          \MongoDB\Driver\Manager(); 现在是“low level”扩展名(php_mongodb),\MongoDB\Client 被重写为“PHP 类”,您需要额外安装 https://docs.mongodb.com/drivers/php/ 才能使用旧样式不错 new \MongoDB\Client('mongodb://127.0.0.1');

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2019-07-01
            • 1970-01-01
            • 1970-01-01
            • 2020-09-28
            • 1970-01-01
            • 1970-01-01
            • 2020-01-03
            相关资源
            最近更新 更多