在WAMP 64位架构上加载Mongo Driver 1.6.x驱动程序

时间:2017-06-07 20:43:19

标签: php c++ windows mongodb apache2.4

所以我在本地安装了64位Apache / PHP。 Apache和PHP都是针对VC11 C ++可再发行组件编译的。

两者都很好! (版本和体系结构信息公司的屏幕截图)

我已经从PECL和repo'中下载了多个1.6.x驱动程序的变量。在亚马逊。

我已确定他们是x64线程安全版并添加到我的〜/ php / ext文件夹中。

我确保扩展名是在php.ini中加载的(并且调用了写.ini文件): extension=php_mongo-1.6.8-5.6-vc11-x86_64.dll

但每次我重新启动Apache时,我都会在PHP错误日志中得到这个:

  

[07-Jun-2017 20:21:20 UTC] PHP警告:PHP启动:无法加载动态库' E:\ PHP5.6 \ ext \ php_mongo-1.6.8-5.6-vc11- x86_64.dll' - %1不是有效的Win32应用程序。

(Apache出现干净.Error.log清理)

为什么抗议这不是Win32应用程序。我不想要它。我的整个架构是64位,Mongo驱动程序也是如此。

enter image description here enter image description here

3 个答案:

答案 0 :(得分:1)

如果有其他人遇到此帖子。经过几个小时试图让它运行后,我只是将所有内容降级为32位。在大门外工作。

尽管PECL提供了#34; 64位"驱动程序 - https://pecl.php.net/package/mongo/1.6.14/windows它似乎与64位/ VC11 /线程安全版本的Apache / PHP兼容

我不确定这是Mongo驱动程序编译的问题还是更深层次的问题?

<强>反正。降级至32位。然后将运行Mongo 1.6.x驱动程序。

答案 1 :(得分:1)

来自php.net

  

为使此扩展名起作用,必须有Windows系统PATH可用的DLL文件。有关如何执行此操作的信息,请参见标题为“如何在Windows上将我的PHP目录添加到PATH”的FAQ。尽管也可以将DLL文件从PHP文件夹复制到Windows系统目录中(因为默认情况下系统路径是系统路径中的系统目录),但不建议这样做。此扩展程序要求以下文件位于PATH中:libsasl.dll

只需将libsasl.dll从PHP目录复制到Apache \ bin目录,然后重新启动Apache。

答案 2 :(得分:0)

可能缺少依赖关系。在http://php.net/manual/en/mongodb.requirements.php

的评论中我怀疑是libsasl的地方

可以在PHP发行版中找到libsasl.dll。