Win PHP5.6 报错提示 Fatal error: Class 'MongoClient' not found

问题
生产环境使用的是PHP5.6,但连接有使用到mongo。
本地开发环境也是用的PHP5.6.40,但同样代码提示报错

Fatal error: Class 'MongoClient' not found

配置
系统:Win7
版本:php5.6.40,VC11,TS
扩展:MongoDB extension version 1.5.3

但是这一段代码在线上环境却运行成功

try {
    $conn = new MongoClient("mongodb://" . $config['username'] . ':' . $config['password'] . '@' . $config['host'] . ':' . $config['port']);
    $dbs = $conn->selectDB($dbname);
    $mongo = $dbs->selectCollection($table);
    $device = $mongo->findOne(['id' => $id]);
} catch (Exception $e) {
	// 
}

排查

E:\test>d:/php56/php.exe -m
[PHP Modules]
bcmath
calendar
Core
ctype
date
dom
ereg
filter
ftp
hash
iconv
json
libxml
mbstring
mcrypt
mhash
mongodb
mysqlnd
odbc
pcre
PDO
Phar
redis
Reflection
session
SimpleXML
SPL
standard
tokenizer
wddx
xml
xmlreader
xmlwriter
zip
zlib

[Zend Modules]

我记得我是安装了php_mongodb.dll的扩展的,如上。
因为我在电脑里同时安装了PHP7.3,和对应 php_mongodb.dll,PHP73可以直接执行对mongodb的操作。

解决方案
网上搜索到的资料,仔细看才发现两个扩展名字是不一样的。
PHP5.6需要 php_mongo.dll而不是php_mongodb.dll。下载 php_mongo.dll 安装即可。

下载地址
电脑PHP5的版本是 PHP5.6 - TS - VC11 所以选择对应版本:

在这里插入图片描述

### 回答1: 出现"Fatal error: Class COM not found"的错误通常是由于在Windows平台上未启用COM (Component Object Model)扩展引起的。解决这个问题的方法如下: 1. 确认已启用COM扩展:打开php.ini文件,可以通过搜索“extension=php_com_dotnet.dll”来找到该行,并去掉行首的分号注释。确保该行不是被注释掉的。然后保存并重启Web服务器。 2. 检查COM组件是否已注册:运行命令提示符(cmd.exe)并进入PHP安装目录下的ext文件夹,然后执行以下命令来检查COM组件是否已注册: ``` regsvr32 -s php_com_dotnet.dll ``` 如果提示"DllRegisterServer in php_com_dotnet.dll succeeded"表示注册成功。如果提示错误,则可能是因为您的PHP版本与您的Windows版本不兼容,此时您需要尝试使用其他版本的PHP。 3. 检查php_com_dotnet.dll文件是否存在:确保php_com_dotnet.dll文件位于PHP安装目录下的ext文件夹中。如果文件不存在,可以尝试从PHP的官方网站下载正确版本的PHP,并将其复制到指定目录中。 4. 确保PHP运行环境正确安装:重新安装PHP并确保按照官方文档的配置要求进行操作。 5. 检查操作系统权限:如果您正在使用Windows Server等操作系统,请确保当前用户具有足够的权限来执行COM相关的操作。尝试将当前用户添加到Administrators组中。 如果尝试了以上方法仍然无法解决问题,建议咨询相关PHP社区或论坛,获得更多技术支持。 ### 回答2: “fatal error: class com not found in”的错误是因为在Windows平台上,PHP的com扩展没有被启用或者没有正确配置。 要解决这个问题,可以按照以下步骤进行操作: 1. 检查php.ini文件中的配置:打开php.ini文件(可以在PHP安装目录下找到),找到以下行并确保前面没有注释符号“;”: ``` extension=php_com_dotnet.dll ``` 2. 重启Web服务器:在修改完php.ini文件后,需要重启Web服务器(如Apache或IIS)以使更改生效。 3. 确保php_com_dotnet.dll文件存在:在php.ini中启用了com扩展后,确保php_com_dotnet.dll文件存在于PHP的扩展目录中(可以在php.ini中的extension_dir配置项中找到扩展目录的路径)。 4. 更新PHP版本:如果以上步骤没有解决问题,可以尝试升级到最新版本的PHP,以确保使用的是最新的com扩展库。 5. 检查并安装COM组件:某些使用COM对象的PHP应用程序可能需要特定的COM组件。请确保这些组件已经正确地安装在Windows系统上。 6. 相关权限设置:如果使用的是IIS服务器,请确保PHP启用了足够的权限来访问COM组件或者其他相关资源。 通过以上方法,您应该能够解决“fatal error: class com not found in”的问题,并且能够顺利地使用PHP的com扩展。如果问题仍然存在,可以尝试搜索具体错误信息,查找其他可能的解决方案。 ### 回答3: 在Windows平台上出现"fatal error: class com not found"错误的主要原因是PHP未正确加载和启用COM(Component Object Model)扩展。为了解决这个问题,你可以按照以下步骤操作: 1. 确保你安装了合适版本的PHP,并且已经将PHP的路径添加到系统环境变量中。你可以在命令行窗口中输入"php -v"来检查PHP版本。 2. 打开PHP的配置文件php.ini。该文件通常位于PHP安装目录下的"php"子目录中。 3.php.ini文件中搜索"extension="。找到以";extension="开头的一行,然后在该行的末尾添加"php_com_dotnet.dll"。确保去掉了";"字符,使其生效。 4. 保存php.ini文件并重新启动你的Web服务器(例如Apache)。 5. 如果仍然出现错误,可能是因为缺少COM组件的安装。你可以打开控制面板,选择"程序"或"程序和功能",然后点击"启用或关闭Windows功能"。 6. 在"Windows功能"窗口中,找到并展开"Internet Information Services",然后展开"Web管理工具"。确保选择了"Internet信息服务"和"Windows身份验证"。 7. 确保你的操作系统中已经安装了相应的COM组件。你可以在控制面板中的"程序和功能"中查找,或者通过下载和安装目标COM组件的最新版本。 8. 最后,重启Web服务器并重新加载PHP脚本,看看是否解决了问题。 通过按照以上步骤操作,你应该能够解决"fatal error: class com not found"错误,并成功加载和使用COM组件。请记住在进行任何配置更改之前备份相关文件,以防出现其他问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值