WAMP上的MongoDB/PHP——phpinfo与PHP-i

WAMP上的MongoDB/PHP——phpinfo与PHP-i,php,windows,wamp,phpinfo,Php,Windows,Wamp,Phpinfo,我正在尝试用PHP和WAMP设置MongoDB。我之前安装了WAMP 64位,但我发现PHP驱动程序不能使用它,所以我卸载了它并安装了32位。我从这里下载了PHP驱动程序:,将dll放在ext中,并在我的PHP.ini中添加了扩展名 当我启动WAMP时,我没有收到任何错误,但是我的phpinfo()没有显示Mongo列表,当我尝试执行以下简单操作时 $m = new Mongo(); // connect 我得到这个错误: ( ! ) Fatal error: Class 'Mongo' no

我正在尝试用PHP和WAMP设置MongoDB。我之前安装了WAMP 64位,但我发现PHP驱动程序不能使用它,所以我卸载了它并安装了32位。我从这里下载了PHP驱动程序:,将dll放在ext中,并在我的PHP.ini中添加了扩展名

当我启动WAMP时,我没有收到任何错误,但是我的phpinfo()没有显示Mongo列表,当我尝试执行以下简单操作时

$m = new Mongo(); // connect
我得到这个错误:

( ! ) Fatal error: Class 'Mongo' not found in C:\development\uswom\btf\test\mongo.php on line 3
My phpinfo显示以下信息:

Build Date  Aug 23 2011 11:47:20
Compiler    MSVC9 (Visual C++ 2008)
Architecture    x86 
PHP API     20090626
PHP Extension   20090626
Zend Extension  220090626
Zend Extension Build    API220090626,TS,VC9
PHP Extension Build     API20090626,TS,VC9 
当我从命令行执行php-I时,它显示mongo已加载:

mongo

MongoDB Support => enabled
Version => 1.2.7-

Directive => Local Value => Master Value
mongo.allow_empty_keys => 0 => 0
mongo.allow_persistent => 1 => 1
mongo.auto_reconnect => 1 => 1
mongo.chunk_size => 262144 => 262144
mongo.cmd => $ => $
mongo.default_host => localhost => localhost
mongo.default_port => 27017 => 27017
mongo.long_as_object => 0 => 0
mongo.native_long => 0 => 0
mongo.no_id => 0 => 0
mongo.utf8 => 1 => 1
WAMP是我安装的唯一php,为了确保我的CLI php与我的WAMP phpinfo匹配,我检查了详细信息,它们匹配:

Build Date => Aug 23 2011 11:47:20
Compiler => MSVC9 (Visual C++ 2008)
Architecture => x86
PHP API => 20090626
PHP Extension => 20090626
Zend Extension => 220090626
Zend Extension Build => API220090626,TS,VC9
PHP Extension Build => API20090626,TS,VC9
最后,“where php”向我显示命令行正在从我的WAMP安装运行php: C:\ProgramFiles(x86)\wamp\bin\php\php5.3.8\php.exe

1) 你知道为什么CLI“php-i”会显示Mongo已加载,而phpinfo()却未加载吗

2) 我猜我的“new Mongo()”调用失败的原因与phpinfo()没有显示Mongo已加载的原因相同,但我不确定从何处开始调试Mongo加载问题。我检查了wamp/logs/apache_error.log,它在启动时没有显示任何错误


提前谢谢。

您的问题不清楚:您能在phpinfo()页面上看到
mongo
扩展吗

如果不知道,那么CLI通常不会使用与Apache(phpinfo())相同的
php.ini

查找要编辑的适当的
php.ini
,通常命名为
php cli.ini
。很可能它与php.ini位于同一文件夹中。有时,它甚至位于
c:\Windows
中,因此请仔细查看

在phpinfo()页面中使用“已解析的php ini文件”,这将使您正确地找到要编辑的正确文件

另外,请确认您只安装了一个PHP版本,因为WAMP可以处理每个实例的许多PHP引擎

希望这有帮助


更新:作为提醒,每次配置更改时都要重新启动Apache服务

我在WAMP和Mongo php扩展上遇到了类似的问题

我在Apache错误日志中注意到,它在/ext中找到mongo.dll,但被阻塞了。经过一些故障排除,我意识到我有64位版本的WAMP,但mongo php.dll仅作为32位从Github分发

因此,我使用32位发行版而不是64位发行版重新安装了WAMP(我想我也可以将mongo扩展构建为64位的.dll)


然后,我安装了线程安全版本的mongo php,并将其加载到我的phpInfo摘要中,现在我可以访问这些函数,这些函数为我解决了问题。

否,mongo没有显示在phpInfo()页面上。此外,如果我故意将C:\Program Files(x86)\wamp\bin\php\php5.3.8\php.ini中的mongo dll拼错,wamp会在启动时给我一个弹出错误,因此我非常确信wamp和phpinfo()使用的是我修改过的同一个php.ini。然后确保在phpinfo()中找到“解析的php ini文件”并激活文件中的mongo扩展名。宾果,就是这样。phpinfo()显示它正在解析WAMP apache bin文件夹中的php.ini。我更新了php.ini,现在一切都好了。谢谢贾斯汀!我知道这是一个老帖子,但我有同样的问题,但因为我是一个新手,我不知道这些文件具体在哪里,也不知道如何编辑它们。可以用一些帖子和“例子”来回答。谢谢。我已经解决了这个完全相同的错误(cli有,phpinfo()没有)。两个小时后,我重新启动了Apache,瞧,mongo出现了!请参阅我关于mongo 64位wamp的回答。