使用PHP创建MongoDB集合报错:调用未定义方法getEncryptedFieldsMap()
问题分析与解决
这个报错的核心原因是你安装的MongoDB PHP Library版本和php_mongodb扩展版本不兼容:getEncryptedFieldsMap() 是php_mongodb扩展(即你安装的php_mongodb.dll)1.14.0及以上版本才新增的方法,但你的扩展版本低于这个阈值,而你用--ignore-platform-reqs强制跳过了版本兼容性检查,安装了高版本的MongoDB库,导致库调用了扩展里不存在的方法。
解决步骤
1. 确认php_mongodb扩展版本
运行以下命令(或在PHP脚本中输出phpinfo()查看):
php -i | grep "MongoDB extension version"
记下输出的版本号,比如1.13.0。
2. 卸载现有不兼容的库
执行命令移除已安装的包:
composer remove jenssegers/mongodb
3. 安装与扩展版本匹配的库
不要使用--ignore-platform-reqs参数,让Composer自动处理版本兼容:
composer require jenssegers/mongodb
如果Composer提示版本冲突,可先指定与扩展版本匹配的mongodb核心库版本,再安装jenssegers/mongodb。比如你的扩展是1.13.x,就执行:
composer require mongodb/mongodb:1.13.* composer require jenssegers/mongodb
4. (可选)升级php_mongodb扩展
如果你的PHP版本支持,下载对应PHP版本的最新php_mongodb.dll替换现有文件,重启Web服务后,再重新安装库(无需加--ignore-platform-reqs),即可使用最新功能。
验证
重新运行你的代码,应该能正常创建集合。
内容的提问来源于stack exchange,提问作者user19241159
相关产品推荐
相关产品推荐

