所以我在本地安装了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驱动程序也是如此。
答案 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。