从 MongoDB 2.4 升级到 2.6 Class 未找到
Upgrading from MongoDB 2.4 to 2.6 Class not found
我有一个项目正在更新基于 Zend Framework 1.12 和 MongoDB 2.4 构建的非常旧的应用程序。最近PHP升级到5.6,现在升级
要求 MongoDB 2.6。服务器也很旧(Redhat 6.9)
我没有升级到更高版本服务器的规定 OS。
MongoDB 位于单独的服务器上(与应用程序文件不同)。
这是我到目前为止所做的:
建立了一个基于 GUI 的虚拟机(Windows 10 host,Centos 7 Guest,PHP 5.6 和 mongo on same)。
MongoDB 的大部分安装都很顺利,但 MongoDB PHP 驱动程序除外。
应用程序代码抛出 'Class Mongo not found' 错误,因为遗留代码库是通过 new Mongo($connStr)
实例化的,即使尝试 new MongoClient()
也不起作用(给出相同的 class not found 错误)。
mongodb.so 文件被放置在适当的位置,并通过 /etc/php.ini 文件正确提及
关于 extension_dir 和扩展名=mongodb.so。
使用 phpinfo() 我验证了扩展 mongodb.so
是否正确加载,但也许
编译了错误的 PHP 驱动程序。
我无法获得高于 1.12 的已安装驱动程序版本,这可能是由于
编译驱动程序的各种尝试。
尝试重用 Vagrant & Virtualbox VM,其中复制了相同的应用程序结构,但遗憾的是我的 OS (Solus) 不再启动该 VM,它拒绝挂载文件夹就像几个月前那样。所以这也是死路一条。我回来了
Windows 作为主机 GUI VM...不断尝试不同的建议,但没有取得更多进展。
我对此进行了大量研究,但可以使用一些社区指导。
也许最好的方法是从 VM 中完全清除 MongoDB 并重试?因为是7以下的PHP,可能是我安装错了。。
php-driver for mogodb wont't compile
此 link MongoDB 2.6 Update Error 讨论删除。
期望的结果是 PHP 5.6.33 with Zend Framework 1.12 和 MongoDB 2.6.latest
希望应用程序中的重新编码量最少,但此时
在测试 DB/Collection.
时,我没有独立的 PHP 脚本(在 Zend 应用程序之外)连接到 MongoDB
我已经预留了足够的时间来修复代码,但现在我手忙脚乱。
任何 help/advice 感谢。提前致谢。
- 我意识到我做错了什么。我从 Github 编译(失败)了一个驱动程序版本,该版本用于 PHP7(不是
5.6) 并因此安装了 mongodb.so - 所以它必须被清除。
- 清除 mongodb 后,我重新安装了 mongo 服务器,但是对于 PHP 驱动程序,我决定使用 Pecl。
- 编译驱动程序时,由于缺少 SSL 库而发生错误。你会
想要检查您是否拥有以下库(您可能已经拥有
他们),如果没有,那么
sudo yum install libcurl4-openssl-dev
sudo yum install openssl-dev
sudo yum install libssl-dev
sudo yum install libsslcommon2-dev
sudo yum install pkg-config
然后...完成所有这些后
sudo pecl install mongo
- 编译完成后(没有错误)我注意到它已经创建了驱动程序
mongo.so
并将其放置在目录 /usr/lib64/php/modules
中,这很好。
- 按照建议,确保
extension=mongo.so
已添加到 /etc/php.ini
- 重新启动 Apache 服务器,并在
phpinfo();
中检查 mongo 支持和版本号
- 在命令行上,您可以执行以下操作来验证..
php --ri mongo
查看安装了哪个 mongo php 驱动程序。它可能会打印...
mongo
Mongo Support => enabled
Version => 1.6.16
SSL Support => enabled
要查看安装的 mongodb 版本,键入 mongod --version
可能会打印...
db version v2.6.12
- 如果您没有重新安装 mongodb 服务器 (mongod),请安装它并 运行 它(或者如果您使用 mongo,尝试使用独立测试脚本或您的应用程序连接到 Mongo
我有一个项目正在更新基于 Zend Framework 1.12 和 MongoDB 2.4 构建的非常旧的应用程序。最近PHP升级到5.6,现在升级 要求 MongoDB 2.6。服务器也很旧(Redhat 6.9) 我没有升级到更高版本服务器的规定 OS。 MongoDB 位于单独的服务器上(与应用程序文件不同)。
这是我到目前为止所做的:
建立了一个基于 GUI 的虚拟机(Windows 10 host,Centos 7 Guest,PHP 5.6 和 mongo on same)。 MongoDB 的大部分安装都很顺利,但 MongoDB PHP 驱动程序除外。 应用程序代码抛出 'Class Mongo not found' 错误,因为遗留代码库是通过
new Mongo($connStr)
实例化的,即使尝试new MongoClient()
也不起作用(给出相同的 class not found 错误)。 mongodb.so 文件被放置在适当的位置,并通过 /etc/php.ini 文件正确提及 关于 extension_dir 和扩展名=mongodb.so。 使用 phpinfo() 我验证了扩展mongodb.so
是否正确加载,但也许 编译了错误的 PHP 驱动程序。 我无法获得高于 1.12 的已安装驱动程序版本,这可能是由于 编译驱动程序的各种尝试。尝试重用 Vagrant & Virtualbox VM,其中复制了相同的应用程序结构,但遗憾的是我的 OS (Solus) 不再启动该 VM,它拒绝挂载文件夹就像几个月前那样。所以这也是死路一条。我回来了 Windows 作为主机 GUI VM...不断尝试不同的建议,但没有取得更多进展。
我对此进行了大量研究,但可以使用一些社区指导。 也许最好的方法是从 VM 中完全清除 MongoDB 并重试?因为是7以下的PHP,可能是我安装错了。。 php-driver for mogodb wont't compile
此 link MongoDB 2.6 Update Error 讨论删除。
期望的结果是 PHP 5.6.33 with Zend Framework 1.12 和 MongoDB 2.6.latest
希望应用程序中的重新编码量最少,但此时 在测试 DB/Collection.
时,我没有独立的 PHP 脚本(在 Zend 应用程序之外)连接到 MongoDB我已经预留了足够的时间来修复代码,但现在我手忙脚乱。
任何 help/advice 感谢。提前致谢。
- 我意识到我做错了什么。我从 Github 编译(失败)了一个驱动程序版本,该版本用于 PHP7(不是 5.6) 并因此安装了 mongodb.so - 所以它必须被清除。
- 清除 mongodb 后,我重新安装了 mongo 服务器,但是对于 PHP 驱动程序,我决定使用 Pecl。
- 编译驱动程序时,由于缺少 SSL 库而发生错误。你会 想要检查您是否拥有以下库(您可能已经拥有 他们),如果没有,那么
sudo yum install libcurl4-openssl-dev
sudo yum install openssl-dev
sudo yum install libssl-dev
sudo yum install libsslcommon2-dev
sudo yum install pkg-config
然后...完成所有这些后
sudo pecl install mongo
- 编译完成后(没有错误)我注意到它已经创建了驱动程序
mongo.so
并将其放置在目录/usr/lib64/php/modules
中,这很好。 - 按照建议,确保
extension=mongo.so
已添加到 /etc/php.ini - 重新启动 Apache 服务器,并在
phpinfo();
中检查 mongo 支持和版本号
- 在命令行上,您可以执行以下操作来验证..
php --ri mongo
查看安装了哪个 mongo php 驱动程序。它可能会打印...
mongo
Mongo Support => enabled
Version => 1.6.16
SSL Support => enabled
要查看安装的 mongodb 版本,键入 mongod --version
可能会打印...
db version v2.6.12
- 如果您没有重新安装 mongodb 服务器 (mongod),请安装它并 运行 它(或者如果您使用 mongo,尝试使用独立测试脚本或您的应用程序连接到 Mongo