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

2023-12-07

当执行以下 PHP 代码时:

$m = new MongoClient("mongodb://localhost:27017");

我收到以下错误:

致命错误:在(...)中找不到类“MongoClient”

MongoDB 扩展似乎已正确安装(我复制了php_mongodb.dll到 ext 文件夹并更新php.ini).

PHP 似乎确认扩展程序正常运行,如下代码确认扩展程序已加载:

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

Also, phpinfo()表明 mongodb 扩展已加载。


UPDATE: 我的问题还没解决。

phpinfo()清楚地显示驱动程序已加载:

enter image description here

但我仍然收到同样的致命错误。


TL;DR

班上MongoClient是旧版 PECL 包的一部分mongo但不再是最新的mongodb包裹。

既然你有mongodb安装了扩展,而不是mongo一,这就是您收到错误的原因

Fatal error: Class 'MongoClient' not found

在 MongoDB PHP 驱动程序 github 存储库上,有关版本 1.0.0 的发行说明建议开发人员使用MongoDB\Driver\Manager代替MongoClient

对我们旧版 mongo 扩展的更改

最重要的是,旧驱动程序的 MongoClient、MongoDB 和 MongoCollection 类已被废弃 MongoDB\Driver\Manager 类,这是新的连接网关 并执行查询、命令和写入操作。

Source:: https://github.com/mongodb/mongo-php-driver/releases/tag/1.0.0

所以,这里是替换类文档以及应该替换您的代码片段:

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

正如文档所提示的那样,该类已被弃用。

Warning定义此类的扩展已被弃用。反而, 这MongoDB应使用扩展名。此类的替代方案 包括:

  • MongoDB\驱动程序\管理器

Source: http://php.net/MongoClient


从我读到的在他们的 github 存储库发布历史记录中,您尝试使用的类自以下版本以来已被废弃mongodb 1.0.0,所以,在版本上1.6.0你是,这个类甚至不属于dll不再了。

这是由这个问题在他们的 github 上

derickr 于 4 月 16 日发表评论

MongoClient 是旧遗留的类 驱动程序,并且不应该在这个驱动程序中可用。新司机 有 \MongoDB\Driver\Manager,并且附带的库有 \MongoDB\客户端。

您需要安装旧的遗留扩展(pecl install mongo)并使用 PHP 5.x,或者更新您的代码以使用这个新的驱动程序 类,因为旧驱动程序不适用于 PHP 7。有一个 升级指南位于http://mongodb.github.io/mongo-php-library/upgrade-guide/

Source: https://github.com/mongodb/mongo-php-driver/issues/300#issuecomment-210820288


另一种方法,正如上面引用的 MongoDB 成员所建议的那样,是使用这个 pecl 扩展:https://pecl.php.net/package/mongo代替https://pecl.php.net/package/mongodb但也请注意那里的警告:

该软件包已被取代,但仍针对错误和安全修复进行维护。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MongoDB:致命错误:找不到类“MongoClient” 的相关文章

  • 如何让 Laravel“确认”验证器将错误添加到确认字段?

    默认情况下 Laravel 确认 验证器将错误消息添加到原始字段 而不是通常包含确认值的字段 password gt required confirmed min 8 是否有任何简单的方法来扩展验证器或使用一些技巧来强制它始终在确认字段而不
  • 如何将对象(模型类型对象)插入到 Laravel 中 Collection 对象的特定索引号处?

    我读过戴尔 里斯的代码明亮 https daylerees com codebright 了解更多关于雄辩的信息Collection在 Laravel 中使用 还做了一些其他研究 但找不到我正在寻找的答案 我想插入一个对象 Model输入对
  • Facebook 扩展权限

    更新2 好的 通过更改使其 有点 工作 loginUrl facebook gt getLoginUrl array canvas gt 1 fbconnect gt 0 req perms gt publish stream next g
  • 如何改进 PHP 分页算法?

    我正在研究 PHP 中的分页算法 我可以猜测它需要改进的空间 所以我想对如何改进它有一些想法 无论是从 UI UX 的角度清理代码本身 还是你能想到的任何其他东西 该算法应输出如下所示的分页 1 2 3 6 7 8 97 98 99 or
  • Laravel 5 配置语言环境,不起作用

    已完成的修改 on 配置 应用程序 php locale gt env APP LOCALE en fallback locale gt en on env APP LOCALE pt 我也复制了 资源 lang en文件到 资源 lang
  • 如果端口不是 80,.htaccess 重定向到错误页面

    我正在运行一个便携式服务器 http www server2go web de 通过 USB 棒 问题是我还在我的本地计算机上安装了 WAMP 并且 Apache 不知何故在 Windows 启动时启动 因为一些我现在不记得的随机原因并且无
  • Zend 框架会话丢失

    我有一个注册表单 当用户注册时 它会将他重定向到他的页面 在 Firefox 和 Chrome 中一切正常 但在 Internet Explorer 中则正常 看起来保存用户信息后 会话就关闭了 并且不会将用户重定向到他的页面 我该如何解决
  • php/symfony/doctrine 内存泄漏?

    我在使用 symfony 1 4 和原则 1 2 将对象批量插入数据库时 遇到问题 我的模型有一种称为 Sector 的对象 每个对象都有多个 Cupo 类型的对象 通常范围从 50 到 200000 这些物体非常小 只是一个短标识符字符串
  • phpenmod 显示其他 php 版本的路径

    我的 Ubuntu 机器上安装了 php 7 0 和 7 2 当我执行时php v 它告诉我我正在使用 php 7 2 在 Apache 上我还启用了 php 7 2 当我跑步时phpenmode zip 我明白了 WARNING Modu
  • json_decode 到自定义类

    是否可以将 json 字符串解码为 stdClass 以外的对象 不是自动的 但你可以按照老式的路线来做 data json decode json true class new Whatever foreach data as key g
  • CakePHP Unfilled 单选按钮在提交时更改为不需要的值

    我有这个表单元素 form gt input ChecklistResponseGovernmentInfo driversLicenseIsOnline array type gt radio empty gt true options
  • 唯一的图像哈希值即使 EXIF 信息更新也不会改变

    我正在寻找一种方法来为 python 和 php 中的图像创建唯一的哈希值 我考虑过对原始文件使用 md5 和 因为它们可以快速生成 但是当我更新 EXIF 信息 有时时区关闭 时 它会更改总和 并且哈希也会更改 有没有其他方法可以为这些文
  • PHP 何时实现了函数使用闭包? [复制]

    这个问题在这里已经有答案了 我在 PHP 手册中找不到解释的部分use 我有代码 num 0 array walk recursive REQUEST function mValue use num num 我的 Eclipse 抱怨 Pa
  • 如何检测iPhone是否有视网膜显示屏?

    如何检测 iPhone 是否配备视网膜显示屏 有靠谱的办法吗 要么是纯 PHP 要么最好是 Zend Framework 方式来执行此操作 我通过这个弄清楚了 var retina window devicePixelRatio gt 1
  • PHP + MySQL 队列

    我需要一个充当队列的简单表 我的 MySQL 服务器限制是我不能使用 InnoDB 表 只能使用 MyISAM 客户 工人将同时工作 他们每次都需要接受不同的工作 我的想法是执行以下操作 伪代码 job lt SELECT FROM que
  • 安全地评估简单的数学

    我想知道是否有一种安全的方法来评估数学 例如 2 2 10000 12000 10000 20 2 2 40 20 23 12 无需使用eval 因为输入可以来自任何用户 我需要实现的只是整数的加法和减法 是否有任何已经存在的代码片段 或者
  • Laravel 5 Eloquent 在多个级别上将关系附加到 JSON

    因此 在模型中包含关系非常容易 例如 class User extends Model protected with roles class Role extends Model protected with permissions 当有对
  • Nginx 安全链接模块不适用于 php 文件,但适用于静态文件

    我在用http nginx org en docs http ngx http secure link module html http nginx org en docs http ngx http secure link module
  • 单元测试和静态方法

    阅读并学习单元测试 试图理解以下帖子 http misko hevery com 2008 12 15 static methods are death to testability 这解释了静态函数调用的困难 我不太清楚这个问题 我一直认
  • 如何强制下载图片?

    我的页面上有一个动态生成的图像 如下所示 img src 我不想告诉我的用户右键单击图像并点击保存 而是想公开一个下载链接 单击该链接将提示下载图像 如何实现这一目标 最初我在 js 中尝试这样做 var path my image att

随机推荐