我有一个项目,用于更新基于Zend Framework 1.12和MongoDB 2.4构建的非常老的应用程序。最近,PHP已升级到5.6,现在已升级 要求MongoDB 2.6。服务器也很旧(Redhat 6.9) 我没有准备升级到更高版本的服务器操作系统。 MongoDB在单独的服务器上(与应用程序文件不在同一盒中)。
这是我到目前为止所做的:
建立了一个基于GUI的虚拟机(Windows 10主机,Centos 7 Guest,PHP 5.6和mongo都在同一台上)。
除MongoDB PHP驱动程序外,大多数情况下安装MongoDB都很顺利。
应用程序代码抛出“找不到类Mongo”错误,因为旧版代码库是通过class LiveKHProvider extends InheritedWidget {
final LiveKHBloc liveKHBloc = LiveKHBloc();
@override
bool updateShouldNotify(InheritedWidget oldWidget) => oldWidget != this;
static LiveKHBloc of(BuildContext context) {
var inheritFromWidgetOfExactType =
context.inheritFromWidgetOfExactType(LiveKHProvider); // to clearly see what’s returning null.
//This is where it returns null,
//so the below line is executed on a null object.
return (inheritFromWidgetOfExactType as LiveKHProvider).liveKHBloc;
}
LiveKHProvider({Key key, Widget child}) : super(key: key, child: child);
}
实例化的,即使尝试new Mongo($connStr)
也行不通(给出未找到相同类的错误)。
mongodb.so文件放置在正确的位置,并通过/etc/php.ini文件正确提及
关于extension_dir和extension = mongodb.so。
使用phpinfo(),我验证了扩展名new MongoClient()
是否正确加载,但是也许
错误的PHP驱动程序被编译。
我无法获得高于1.12的已安装驱动程序版本,可能是由于
编译驱动程序的各种尝试。
试图重复使用复制了相同应用程序结构的Vagrant&Virtualbox VM,但遗憾的是我的OS(Solus)不再启动该VM,它拒绝像几个月前那样装载文件夹。所以这也是一个死胡同。我回来了 Windows作为宿主GUI VM进入Windows ...继续尝试建议的其他方法,但并没有进一步发展。
我对此进行了大量研究,但可以使用一些社区指导。 也许最好的方法是从VM中完全清除MongoDB,然后重试?由于它是低于7的PHP,也许我安装了错误的东西。 php-driver for mogodb wont't compile
此链接MongoDB 2.6 Update Error讨论了删除操作。
所需结果是带有Zend Framework 1.12和MongoDB 2.6.latest的PHP 5.6.33
希望,应用程序中的重新编码量将很小,但此时 我没有一个独立的PHP脚本(在Zend应用程序之外)可以连接到测试数据库/集合上的MongoDB。
我预算了足够的时间来修复代码,但是现在我正在转动轮子。
任何帮助/建议表示赞赏。提前致谢。
答案 0 :(得分:0)
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 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