【问题标题】:MongoDB on Wamp x64 (win x64) = mongo.native_long errorWamp x64 (win x64) 上的 MongoDB = mongo.native_long 错误
【发布时间】:2014-11-19 18:59:09
【问题描述】:

我的开发环境有一个大问题。

上下文:
我的电脑:Win 8.1 x64
我的 WampServer 安装:x64
我的 MongoDB 安装:x64 来自http://www.mongodb.org/downloads

我已经从http://pecl.php.net/package/mongo 安装了 php 扩展。

我的问题是我们的生产服务器将一些 64 位 INT 存储到数据库中。

当我尝试在我的开发环境中访问这些数据时,我得到了:

MongoCursorException

无法在此平台上原生表示长 1108547148863410176

我在互联网上发现,在 64 位架构上使用 64 位 INT 需要一个名为“mongo.native_long = 1”的 mongoDB 参数。
但是当我尝试在我的“php.ini”文件中添加这个参数时,服务器没有启动并给我一个错误,比如:

[2014 年 11 月 19 日 18:25:52 UTC] PHP 致命错误:PHP 启动:为防止数据损坏,不允许在第 0 行的 Unknown 中打开 32 位平台上的 mongo.native_long 设置

我的 mongoDB 扩展 DLL 是基于 32 位构建的还是我错过了一些事情?

【问题讨论】:

  • 那我假设你的开发环境是32位系统。 Windows 和 WAMPServer 都是 32 位的,或者您已在 64 位操作系统上安装了 32 位 WAMPServer。请记住,您不能在 32 位操作系统上安装 WAMPserver 64 位。
  • 正如我在线程开头所写的,我的操作系统是 Win 8.1 x64,所以我使用的是 64 位 Windows 版本和 64 位版本的 WampServer:/
  • 你确定。这样做以确保。启动命令窗口,将 CD 放入 \wamp\bin\apache\apache2.4.9\bin 文件夹,然后运行 ​​httpd -V。在输出中查找以 Architecture 开头的行。
  • 我确定,这里有一个 admin mod 中的命令输出屏幕:Screen of my console (imgur link)
  • 您找到解决方案了吗?我现在正在处理同样的问题

标签: php mongodb 64-bit wamp


【解决方案1】:

对我来说唯一有效的是:

ini_set('mongo.long_as_object', 1);

希望它能节省一些人的时间。这是让你想知道的那些愚蠢的事情之一: “为什么我会成为一名程序员?”

编辑:http://pecl.php.net/package/mongo 获得 正确 驱动程序帮助了我。我已经下载了最新的驱动程序。使用 phpinfo() 命令检查您的版本。例如。对我来说,在 64 位 Win7 上是:

PHP Version 5.5.12
PHP Extension Build:    API20121212,TS,VC11

注意“TS,VC11”字符串。这意味着它是线程安全的,但您的版本可能不是线程安全的 (NTS)。

所以我下载了 64 位的 TS for PHP 5.5。我一直在处理这个问题,最后,适当的驱动程序解决了这个问题。

【讨论】:

  • 这对我在 linux 环境下的 Lampp 有帮助,tnx。
  • 是的,这是一件大事。很高兴它对您有所帮助,没有合适的驱动程序与 mongo 一起工作可能是一场噩梦。
【解决方案2】:

当使用 32 位 apache 控制台(如 wampp 或 xampp)时,您应该将以下内容添加到您的 php.ini 文件中:

mongo.long_as_object= 1

上面这行应该把所有的long都转换成object,这样就不会发生异常了。

希望这对所有遇到此问题的 32 位用户有所帮助。

【讨论】:

    【解决方案3】:

    我在 Windows X64 上使用 WAMP x64 时遇到了同样的问题。我的解决方法是update the Mongo library to 1.6.14

    【讨论】:

      【解决方案4】:

      C:\wamp64\bin\php\php5.6.35 在 php.ini 中添加:mongo.long_as_object = 1

      C:\wamp64\bin\apache\apache2.4.33\bin 在 php.ini 中添加:mongo.long_as_object = 1

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-06-20
        • 1970-01-01
        • 1970-01-01
        • 2011-03-05
        • 2014-07-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多