2

我正在尝试使用 PHP 和 WAMP 设置 MongoDB。我之前安装了 WAMP 64 位,但我发现 PHP 驱动程序无法使用它,所以我卸载了它并安装了 32 位。我从这里下载了 PHP 驱动程序:http: //downloads.mongodb.org/mongo-latest-php5.3vc9ts.zip,将 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

我的 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:\Program Files (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,它在启动时没有显示错误。

提前致谢。

4

2 回答 2

4

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

如果不知道,通常 CLI 不使用与php.iniApache 相同的 (phpinfo())。

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

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

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

希望这可以帮助!

update:提醒一下,在每次配置更改时重新启动 Apache 服务

于 2012-01-11T16:19:21.290 回答
2

我对 WAMP 和 Mongo php 扩展也有类似的问题。

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

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

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

于 2012-05-05T20:51:55.330 回答