【问题标题】:MongoDB / PHP on WAMP -- phpinfo vs php -iWAMP 上的 MongoDB / PHP -- phpinfo 与 php -i
【发布时间】:2012-02-07 23:49:26
【问题描述】:

我正在尝试使用 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,它在启动时没有显示错误。

提前致谢。

【问题讨论】:

标签: php windows wamp phpinfo


【解决方案1】:

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

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

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

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

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

希望这会有所帮助!

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

【讨论】:

  • 不,mongo 不会出现在 phpinfo() 页面上。另外,如果我故意拼错 C:\Program Files (x86)\wamp\bin\php\php5.3.8\php.ini 中的 mongo dll,WAMP 在启动时会给我一个弹出错误,所以我很有信心 WAMP和 phpinfo() 使用的是我修改过的 php.ini。
  • 然后确保在 phpinfo() 中找到“已解析的 php ini 文件”并在 this 文件中激活 mongo 扩展。
  • 宾果游戏,就是这样。 phpinfo() 显示它正在解析 WAMP apache bin 文件夹中的 php.ini。我更新了 php.ini,现在一切正常。谢谢贾斯汀!
  • 我知道这是一篇旧帖子,但我遇到了同样的问题,但因为我是新手,我不知道这些文件具体在哪里,也不知道如何编辑它们。一些帖子和“示例”可以回答。谢谢。
  • 我已经解决了这个完全相同的错误(cli 有它,phpinfo() 没有)。两个小时后,我重新启动了 Apache,瞧 - mongo 出现了!
【解决方案2】:

我在使用 WAMP 和 Mongo php 扩展时遇到了类似的问题。

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

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

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

【讨论】:

    猜你喜欢
    • 2016-06-30
    • 2016-09-05
    • 1970-01-01
    • 2011-11-18
    • 2013-12-28
    • 2018-01-15
    • 1970-01-01
    • 1970-01-01
    • 2020-06-01
    相关资源
    最近更新 更多