Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
找不到从MongoDB 2.4升级到2.6的类_Mongodb_Zend Framework_Redhat_Php 5.6 - Fatal编程技术网

找不到从MongoDB 2.4升级到2.6的类

找不到从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驱动程序

我有一个项目在更新基于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驱动程序之外,安装MongoDB在大部分情况下都很顺利。 应用程序代码抛出了“Class Mongo not found”错误,因为旧代码库正在通过
    new Mongo($connStr)
    实例化,即使尝试
    new MongoClient()
    也无法工作(给出了相同的类not found错误)。 mongodb.so文件被放置在适当的位置,并通过/etc/php.ini文件被适当提及 关于extension_dir和extension=mongodb.so。 使用phpinfo()我验证了扩展名
    mongodb。因此
    加载正确,但可能
    编译了错误的PHP驱动程序。
    我无法获得1.12以上的安装驱动程序版本,这可能是由于
    编译驱动程序的各种尝试

  • 尝试重用一个Vagrant&Virtualbox虚拟机,其中复制了相同的应用程序结构,但遗憾的是,我的操作系统(Solus)不再使用这个虚拟机,它拒绝像几个月前那样装载文件夹。所以这也是一条死胡同。我回来了 将Windows作为主机GUI虚拟机。。。不断尝试不同的建议,但没有取得更多进展

我在这方面做了大量的研究,但可以使用一些社区指导。 也许最好的方法是从VM中完全清除MongoDB,然后再试一次?由于PHP低于7,可能我安装了错误的东西。。

此链接讨论删除

理想的结果是PHP5.6.33,Zend Framework 1.12和MongoDB 2.6.3是最新版本

希望应用程序中的重新编码量最小,但此时 我还没有一个独立的PHP脚本(在Zend应用程序之外)来连接测试DB/集合上的MongoDB

我已经安排了足够的时间来修复代码,但现在我正在旋转轮子

感谢您的帮助/建议。提前谢谢

  • 我意识到我做错了什么。我从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
    中,这很好
  • 正如建议的那样,确保将
    extension=mongo.so
    添加到/etc/php.ini中
  • 重新启动Apache服务器,并在
    phpinfo()中检查mongo支持和版本号
  • 在命令行上,可以执行以下操作来验证。。
    php--ri mongo
    查看安装了哪个mongo-php驱动程序。它可能会打印
mongo
Mongo支持=>已启用
版本=>1.6.16
SSL支持=>已启用

要查看安装的mongodb版本,请键入可以打印的
mongod--version

db版本v2.6.12

  • 如果您没有重新安装mongodb服务器(mongod),请安装并运行它(或者如果您使用mongo连接到外部服务器,请尝试使用独立测试脚本或应用程序连接到mongo)

这里只是一个更新,我完全清除了所有mongo和mongodb文件以及其他文件。在使用pecl install mongo(不是pecl install mongodb)时我注意到有一个SSL错误阻止了正确的编译。通过安装一个丢失的库解决了这个问题,然后再次运行
pecl install mongo
,它得到了预期的结果。您可以添加解决方案作为您自己问题的答案并接受它。不久前,我也遇到了类似的问题,并翻阅了我自己的问题档案ns和答案,我发现了一些东西,可能会帮助您和面临类似的mongo php驱动程序问题。有趣的是,我忘记了我遇到过类似的问题。不管怎样,我希望它能帮助任何人摆脱困境。