【问题标题】:Fatal Error - 'Mongo' class not found致命错误 - 未找到“Mongo”类
【发布时间】:2014-08-11 14:43:00
【问题描述】:

我正在尝试执行此操作:

<?php

// connect
$m = new Mongo();

?>

但我收到以下错误:

致命错误:在 C:\wamp\www 中找不到类“Mongo”.....


信息:

  • PHP:5.38
  • MongoDB:mongodb-win32-i386-2.0.2
  • MongoDB PHP 驱动程序:mongo-1.1.4-php5.3vc6ts
  • WampServer:2.2
  • 操作系统:Windows 7 企业版 SP1

我已经按照 MongoDB 安装正常(包括将 DLL 添加到 ext 和 php.ini),我已经启动了 mongod.exe 并且 WAMP 正在运行。

这意味着什么是缺失/不正确的?


编辑:

我已经让它在另一台 Windows 7 机器(Windows 7 Professional)上运行。这让我很好奇。所以现在我的 Windows 7 Enterprise SP1 机器与我的 Win7 Professional 机器具有相同的 http.confphp.iniC:\wamp\bin\mongodb 内容(因此 DB 完全相同)和完全相同的批处理文件来启动 mongod.exe

但是,我在 Win7 Enterprise SP1 机器上所能做的就是通过命令行连接。我的 Win7 Professional 机器的 phpinfo() 包含:
我的 Win7 Enterprise SP1 机器不包含对 MongoDB 的任何引用。

我用来启动MongoDB的批处理文件的内容:

"C:\wamp\bin\mongodb\bin\mongod.exe" --logpath "C:\wamp\bin\mongodb\logs\error.log" --logappend --dbpath "C:\wamp\bin\mongodb\data\db" --directoryperdb --service
Net Start "MongoDB"
pause

【问题讨论】:

  • 你重启了apache吗?还要检查您是否编辑了正确的php.iniphpinfo() 指示为已加载`
  • @Mchl 是的,我重新启动了,是的,我根据phpinfo() 编辑了正确的php.ini
  • 只是为了检查:www php.ini 在C:\wamp\bin\apache\apache2.x.y\bin。对于 CLI php.ini 位于 C:\wamp\bin\php\php5.3.8
  • @Mchl phpinfo() 表示已加载的php.ini 位于C:\wamp\bin\apache\Apache2.2.21\bin\php.ini,这就是我添加的extension=php_mongo.dll
  • 应该没问题。我不知道还能看什么。

标签: php apache mongodb installation wamp


【解决方案1】:

问题在于 PHP 驱动程序 (php_mongo.dll)。 Apache/WAMP 出于某种原因不喜欢mongo-1.1.4-php5.3vc6ts 版本。我的 Windows 7 Professional 机器有 mongo-1.2.5-php5.3vc9ts 版本。这是两台机器之间的唯一区别。

我最初在 Windows 7 Enterprise 机器上使用的是 mongo-1.2.5-php5.3vc9ts 版本的驱动程序,但在解决问题时更改为 mongo-1.1.4-php5.3vc6ts 版本。所以最初的问题实际上可能只是数据库路径data\db 不存在/找不到(并且需要在运行/启动mongod.exe 时使用--dbpath 指定)。

【讨论】:

  • 这非常棘手,因为您必须安装 php_mongo.dll 而不是 php_mongodb.dll。 PECL 库中有 2 个包。 vc6 和 vc9 还需要安装适当的 C++ Redistributable 库。版本 x86 或 x64 取决于 Apache 的编译版本
【解决方案2】:

如果 php CLI 中存在此问题,您应该将 extension=mongo.so 添加到您的 /etc/php5/cli/php.ini 文件中

【讨论】:

    【解决方案3】:

    在 phpinfo 页面中检查您的 PHP 二进制文件的确切编译器名称,并尝试重新安装基于相同编译器构建的 mongo 驱动程序。

    http://www.php.net/manual/en/mongo.installation.php#mongo.installation.windows

    您现在使用的是 mongo 驱动程序,该驱动程序是在 Visual Studio 6 上构建的,具有线程安全性。 (vs6ts 就是这个意思)

    类似的问题是由编译器问题引起的;

    http://www.php.net/manual/en/mongo.installation.php#104223

    【讨论】:

      【解决方案4】:

      在 Ubuntu 上,我使用了 this tutorial 。安装后,回显 phpinfo() 并检查 mongo.ini 文件是否位于 phpinfo 中提到的正确目录中,并使用“扫描此目录以获取其他 .ini 文件”

      【讨论】:

        猜你喜欢
        • 2017-07-27
        • 2014-03-14
        • 2012-04-01
        • 2012-10-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多