Eir*_*ika 6 php 64-bit wamp mongodb
我的开发环境存在很大问题.
上下文:
我的电脑:Win 8.1 x64
我的WampServer安装:x64
My MongoDB安装:x64来自http://www.mongodb.org/downloads
我从http://pecl.php.net/package/mongo安装了php扩展.
我的问题是我们的生产服务器将大约64位INT存储到数据库中.
当我尝试在我的开发环境中访问这些数据时,我得到了:
MongoCursorException
不能在这个平台上原生代表长1108547148863410176
我在互联网上发现需要一个名为"mongo.native_long = 1"的mongoDB参数才能在64位架构上使用64位INT.
但是当我尝试在我的"php.ini"文件中添加此参数时,服务器无法启动并给出如下错误:
[2014年11月19日18:25:52 UTC] PHP致命错误:PHP启动:为了防止数据损坏,您不能在第0行的Unknown中打开32位平台上的mongo.native_long设置
我的mongoDB扩展DLL是在32位上构建还是我错过了要做的事情?
对我来说唯一有用的是:
ini_set('mongo.long_as_object', 1);
Run Code Online (Sandbox Code Playgroud)
希望它能节省一些人的时间.这是让你想知道的那些愚蠢的事情之一: "为什么我成为一名程序员?"
编辑:从http://pecl.php.net/package/mongo获取正确的驱动程序帮助了我.我已经下载了最新的驱动程序.使用phpinfo()命令检查您的版本.对我来说,在64位Win7上它是:
PHP Version 5.5.12
PHP Extension Build: API20121212,TS,VC11
Run Code Online (Sandbox Code Playgroud)
注意"TS,VC11"字符串.这意味着它是线程安全的,但您的版本可能不是线程安全的(NTS).
所以我下载了64位,TS for PHP 5.5.我很长时间处理这个问题,最后,正确的司机解决了这个问题.
小智 5
当使用 32 位 apache 控制台(如 wampp 或 xampp)时,您应该将以下内容添加到您的 php.ini 文件中:
mongo.long_as_object= 1
Run Code Online (Sandbox Code Playgroud)
上面的行应该将所有 long 转换为 object,这样就不会发生异常。
希望这可以帮助所有遇到此问题的 32 位用户。
| 归档时间: |
|
| 查看次数: |
4482 次 |
| 最近记录: |