You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

phpinfo与pecl显示MongoDB版本不一致,调用isDefault()报错求助

解决MongoDB扩展版本不一致导致的WriteConcern::isDefault()未定义错误

Hey,我一眼就看出问题出在哪了——你终端里pecl显示已经安装了1.4.3版本的mongodb扩展,但PHP实际运行时加载的却是旧的1.2.9版本,而MongoDB\Driver\WriteConcern::isDefault()这个方法是1.3.0版本才新增的,旧版本自然没有,所以才会报这个致命错误。

下面是具体的解决步骤,跟着做就行:

1. 清理旧版本的扩展配置

首先找到PHP的扩展配置目录,不同环境路径略有差异:

  • 若使用Web服务器(如Apache),路径大概是/etc/php/[你的PHP版本]/apache2/conf.d/
  • 若用命令行运行脚本,路径是/etc/php/[你的PHP版本]/cli/conf.d/

进入目录后,找到对应1.2.9版本的mongodb扩展配置文件(比如20-mongodb.ini),直接删除或者重命名(例如改成20-mongodb.ini.old),避免PHP加载它。另外如果还有旧的mongo扩展配置(比如20-mongo.ini)也一起处理掉,这个旧驱动已经废弃,留着只会添乱。

2. 确保新版本扩展被正确启用

先重新安装1.4.3版本的扩展(也可以直接装最新稳定版,看你需求):

sudo pecl install mongodb-1.4.3

安装完成后,手动生成正确的扩展配置文件(替换成你的PHP版本,比如7.0):

sudo echo "extension=mongodb.so" > /etc/php/7.0/mods-available/mongodb.ini

然后启用这个扩展:

sudo phpenmod mongodb

3. 重启服务让配置生效

  • 如果是Web环境,重启Apache或Nginx:
sudo service apache2 restart
  • 如果是命令行模式,直接关闭当前终端重新打开即可,新终端会加载新的扩展配置。

4. 验证版本是否匹配

现在运行这个命令查看PHP实际加载的版本:

php -i | grep "MongoDB extension version"

或者刷新phpinfo()页面,确认版本已经变成1.4.3。这时候再运行你的Demo,那个错误应该就消失了。

额外提醒

别同时安装mongo和mongodb两个扩展,它们是新旧两套驱动,同时存在很容易冲突。另外如果你的项目用Composer管理依赖,记得mongodb/mongodb包的版本要和扩展版本兼容,不然可能还会出现其他奇怪的问题。

内容的提问来源于stack exchange,提问作者Yogesh Dobariya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:41:16