找不到从MongoDB 2.4升级到2.6的类
我有一个项目在更新基于Zend Framework 1.12和MongoDB 2.4的非常旧的应用程序。最近PHP升级到了5.6,现在升级了 请求访问MongoDB 2.6。服务器也很旧(Redhat 6.9) 我没有升级到更高版本服务器操作系统的规定。 MongoDB位于单独的服务器上(与应用程序文件不同) 以下是我迄今为止所做的工作:找不到从MongoDB 2.4升级到2.6的类,mongodb,zend-framework,redhat,php-5.6,Mongodb,Zend Framework,Redhat,Php 5.6,我有一个项目在更新基于Zend Framework 1.12和MongoDB 2.4的非常旧的应用程序。最近PHP升级到了5.6,现在升级了 请求访问MongoDB 2.6。服务器也很旧(Redhat 6.9) 我没有升级到更高版本服务器操作系统的规定。 MongoDB位于单独的服务器上(与应用程序文件不同) 以下是我迄今为止所做的工作: 建立了一个基于GUI的虚拟机(Windows 10主机、Centos 7客户机、PHP5.6和mongo在同一平台上)。 除了MongoDB PHP驱动程序
- 建立了一个基于GUI的虚拟机(Windows 10主机、Centos 7客户机、PHP5.6和mongo在同一平台上)。
除了MongoDB PHP驱动程序之外,安装MongoDB在大部分情况下都很顺利。
应用程序代码抛出了“Class Mongo not found”错误,因为旧代码库正在通过
实例化,即使尝试new Mongo($connStr)
也无法工作(给出了相同的类not found错误)。 mongodb.so文件被放置在适当的位置,并通过/etc/php.ini文件被适当提及 关于extension_dir和extension=mongodb.so。 使用phpinfo()我验证了扩展名new MongoClient()
mongodb。因此
加载正确,但可能 编译了错误的PHP驱动程序。 我无法获得1.12以上的安装驱动程序版本,这可能是由于 编译驱动程序的各种尝试
- 尝试重用一个Vagrant&Virtualbox虚拟机,其中复制了相同的应用程序结构,但遗憾的是,我的操作系统(Solus)不再使用这个虚拟机,它拒绝像几个月前那样装载文件夹。所以这也是一条死胡同。我回来了 将Windows作为主机GUI虚拟机。。。不断尝试不同的建议,但没有取得更多进展
- 我意识到我做错了什么。我从Github编译了一个用于PHP7的驱动程序版本(失败了)(不是 5.6)并安装了mongodb.so,因此必须对其进行清除李>
- 清除mongodb之后,我重新安装了mongo服务器,但对于PHP驱动程序,我决定使用Pecl
- 编译驱动程序时,由于缺少SSL库而发生错误。你会 要检查您是否有以下库(您可能已经有了) 如果没有,那么
sudo-yum安装libcurl4-openssl-dev
sudo-yum安装openssl-dev
sudo-yum安装libssl-dev
sudo yum安装libsslcommon2 dev
sudo yum安装包配置
然后。。。一旦所有这些都完成了
sudo pecl安装mongo
- 编译完成后(没有错误),我注意到它创建了驱动程序
,并将其放在目录mongo.so
中,这很好/usr/lib64/php/modules
- 正如建议的那样,确保将
添加到/etc/php.ini中extension=mongo.so
- 重新启动Apache服务器,并在
phpinfo()中检查mongo支持和版本号代码>
- 在命令行上,可以执行以下操作来验证。。
查看安装了哪个mongo-php驱动程序。它可能会打印php--ri mongo
mongo
Mongo支持=>已启用
版本=>1.6.16
SSL支持=>已启用
要查看安装的mongodb版本,请键入可以打印的mongod--version
db版本v2.6.12
- 如果您没有重新安装mongodb服务器(mongod),请安装并运行它(或者如果您使用mongo连接到外部服务器,请尝试使用独立测试脚本或应用程序连接到mongo)
pecl install mongo
,它得到了预期的结果。您可以添加解决方案作为您自己问题的答案并接受它。不久前,我也遇到了类似的问题,并翻阅了我自己的问题档案ns和答案,我发现了一些东西,可能会帮助您和面临类似的mongo php驱动程序问题。有趣的是,我忘记了我遇到过类似的问题。不管怎样,我希望它能帮助任何人摆脱困境。