Wamp x64上的MongoDB(win x64)= mongo.native_long错误

时间:2014-11-19 18:59:10

标签: php mongodb 64-bit wamp

我的开发环境存在很大问题。

背景:
我的电脑:赢8.1 x64
我的WampServer安装: x64
我的MongoDB安装: x64 来自http://www.mongodb.org/downloads

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

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

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

  

MongoCursorException

     

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

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

  

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

我的mongoDB扩展DLL是在32位上构建还是我错过了要做的事情?

4 个答案:

答案 0 :(得分:6)

对我来说唯一有用的是:

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。我很长时间处理这个问题,最后,正确的司机解决了这个问题。

答案 1 :(得分:4)

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

mongo.long_as_object= 1

以上行应该将所有多头转换为对象,这样就不会发生异常。

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

答案 2 :(得分:0)

我在Windows X64上遇到与WAMP x64相同的问题。我的修复是update the Mongo library to 1.6.14

答案 3 :(得分:0)

在php.ini中

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

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