PHPEnv下安装MongoDB扩展核心是:一装PECL的mongodb扩展(非mongo),二Windows用户必须严格匹配TS/NTS与x64/x86;需先确认PHP版本、线程模型及php.ini路径,再分别处理Linux/macOS(pecl install)或Windows(手动放DLL),最后用脚本验证类是否可用。

phpEnv 下安装 MongoDB 扩展,核心就两点:PECL 扩展必须装,mongodb(不是 mongo)是唯一可用名称;Windows 用户尤其要核对 TS/NTS 和架构,错一个就加载失败。
确认 phpEnv 当前 PHP 版本和线程模型
phpEnv 通常管理多个 PHP 版本,每个版本的扩展路径、php.ini、CLI/Web 环境都可能不同。不查清楚就硬加 extension=mongodb,大概率白忙活。
- 先切到你要配的版本:
phpenv local 8.1(或你实际用的版本) - 运行
php -v确认版本号(如PHP 8.1.28) - 运行
php -i | grep -E "Thread Safety|Architecture"查看是否为enabled(TS)或disabled(NTS),以及是x64还是x86 - 运行
php --ini看到的Loaded Configuration File路径,才是你要改的php.ini
Linux/macOS 下用 pecl install mongodb(推荐)
phpEnv 默认不自带 PECL 命令,但可通过 phpenv which pecl 检查是否存在;若无,需先确保系统已装 php-dev 和 pkg-config(Ubuntu/Debian)或 php-devel(CentOS/RHEL)。
- 执行
pecl install mongodb—— 注意不是mongo,旧mongo扩展已废弃多年 - 安装成功后会输出类似
installing /path/to/mongodb.so的路径,记下这个目录 - 编辑
php.ini,添加extension=mongodb(不是mongodb.so,新版扩展支持短名加载) - 如果
extension_dir未显式设置,或指向错误目录,需手动补全:extension_dir = "/path/to/extensions" - 重启 Web 服务(如 Nginx + PHP-FPM)或 CLI 环境(关闭再开终端)
Windows 下 phpEnv 用户务必手动匹配 DLL
phpEnv for Windows(如基于 XAMPP 或自建环境)不支持 pecl install,必须下载预编译 DLL 并手动配置。常见报错 PHP Warning: PHP Startup: Unable to load dynamic library 'mongodb' 全因版本不匹配。
立即学习“PHP免费学习笔记(深入)”;
- 访问 https://www.php.cn/link/51d3a6f35b8dfe611ff24214c8ef79d1
- 选与你
php -v和php -i完全一致的包,例如:php_mongodb-1.19.0-8.1-nts-x64.zip - 解压后取
php_mongodb.dll,放入 phpEnv 对应 PHP 版本的ext目录(如~/.phpenv/versions/8.1.28/ext/) - 在该版本的
php.ini中添加extension=mongodb(同样不要写.dll后缀) - 注意:phpEnv 的 Apache/Nginx 配置可能指向不同
php.ini,务必用phpinfo()页面确认“Loaded Configuration File”路径
验证是否真生效,别只信 phpinfo()
phpinfo() 显示 “mongodb” 模块 ≠ 扩展能用。有些环境会把扩展名注册进列表但实际加载失败(比如依赖库缺失、SSL 库找不到),导致运行时抛出 Class 'MongoDB\Driver\Manager' not found。
- 写个最小验证脚本:
<?php if (!extension_loaded('mongodb')) { die("扩展未加载"); } if (!class_exists('MongoDB\Driver\Manager')) { die("驱动类不可用 —— 可能是 libmongoc 初始化失败"); } echo "OK:扩展加载且基础类可用"; ?> - CLI 下直接跑:
php test.php,比浏览器更干净 - 若报
libssl或libcrypto错误(Linux/macOS),需装libssl-dev(Debian/Ubuntu)或openssl-devel(CentOS/RHEL)再重装扩展
最容易被忽略的是:phpEnv 多版本共存时,CLI 和 Web 使用的 php.ini 往往不是同一个文件,而 extension=mongodb 只加在一个里,另一个就永远报错。动手前先跑两遍 php --ini 和 phpinfo(),比反复重装快十倍。



















