PHP MongoDB驱动报错:未找到MongoDB\Driver\Manager类求助
解决「MongoDB\Driver\Manager类找不到」的问题
根本原因
你当前使用的php_mongodb-1.15.1-7.4-ts-x64驱动是PHP 7.4专属版本,与你运行的PHP 8.2完全不兼容——哪怕更换1.16/1.17版本,只要没匹配PHP 8.2的驱动包,问题就会持续存在。
修复步骤
- 确认PHP环境参数:
新建一个PHP文件,写入<?php phpinfo(); ?>并运行,找到以下关键信息:Thread Safety:显示enabled代表是TS(线程安全)版本,disabled则是NTSArchitecture:确认是x64还是x86架构
通常XAMPP默认是TS+x64环境,对应PHP 8.2要找完全匹配的驱动。
- 下载对应驱动:
选择PHP 8.2版本、对应TS/NTS、对应位数的MongoDB驱动包,比如命名格式为php_mongodb-[版本号]-8.2-ts-x64.zip的包(优先选最新稳定版)。 - 替换驱动文件:
解压下载的zip包,将其中的php_mongodb.dll复制到XAMPP的php/ext目录下,覆盖旧的驱动文件。 - 校验php.ini配置:
通过phpinfo里的Loaded Configuration File确认当前Apache使用的php.ini路径,打开该文件确保已添加extension=php_mongodb.dll(无注释符号;,路径正确)。 - 重启Apache服务:
必须重启XAMPP中的Apache,让新驱动生效。 - 验证驱动加载状态:
重新运行phpinfo页面,搜索mongodb关键字,若能看到完整的模块配置信息,说明驱动加载成功。
代码补充说明
你的代码中$db = $m -> mydb;写法错误,MongoDB\Driver\Manager类没有这种直接获取数据库的属性调用方式。如果要操作数据库,有两种方式:
- 通过Composer安装
mongodb/mongodb高层库,使用更简洁的API:require 'vendor/autoload.php'; $client = new MongoDB\Client("mongodb://localhost:27017"); $db = $client->mydb; // 这样才是正确的写法 - 继续使用底层驱动,需通过
executeBulkWrite、executeQuery等方法操作,示例:$manager = new MongoDB\Driver\Manager("mongodb://localhost:27017"); // 插入文档到mydb库的test集合 $bulk = new MongoDB\Driver\BulkWrite; $bulk->insert(['title' => 'Demo']); $manager->executeBulkWrite('mydb.test', $bulk);
内容的提问来源于stack exchange,提问作者Satyadip Biswas
相关产品推荐
相关产品推荐

