2014-11-19 6 views
5

मुझे अपने विकास पर्यावरण के साथ एक बड़ी समस्या है।वैंप x64 पर मोंगोडीबी (जीत x64) = mongo.native_long त्रुटि

प्रसंग:
मेरा कंप्यूटर: विन 8.1
मेरे wampserver स्थापित:
मेरे MongoDB स्थापित: http://www.mongodb.org/downloads

से मैं http://pecl.php.net/package/mongo से php विस्तार स्थापित किया है।

मेरी समस्या यह है कि हमारे उत्पादन सर्वर डेटाबेस में कुछ 64 बिट्स INT स्टोर करते हैं।

जब मैं कोशिश, मेरे विकास के वातावरण में, इस डेटा को एक्सेस करने, मुझे मिल गया है:

MongoCursorException

Cannot natively represent the long 1108547148863410176 on this platform

मैं इंटरनेट कि MongoDB के नामक पैरामीटर पर पाया "mongo.native_long = 1" की जरूरत है 64 बिट्स आर्किटेक्चर पर 64 बिट्स INT का उपयोग करने के लिए।
लेकिन जब मैं अपने "php.ini" फ़ाइल में इस परम जोड़ने का प्रयास करते हैं, तो सर्वर शुरू और मेरे जैसे एक त्रुटि नहीं देते:

[19-Nov-2014 18:25:52 UTC] PHP Fatal error: PHP Startup: To prevent data corruption, you are not allowed to turn on the mongo.native_long setting on 32-bit platforms in Unknown on line 0

मेरी MongoDB विस्तार DLL है 32 बिट पर या निर्माण किया गया है मुझे कुछ करने के लिए याद आया?

+0

तब मुझे लगता है कि आपका विकास वातावरण 32 बिट सिस्टम है। या तो दोनों विंडोज़ और इसलिए WAMPServer 32 बिट है या आपने 64 बिट ओएस पर 32 बिट WAMPServer स्थापित किया है।याद रखें कि आप 32 बिट ओएस पर WAMPserver 64 बिट इंस्टॉल नहीं कर सकते हैं। – RiggsFolly

+0

जैसा कि मैंने धागे की शुरुआत में लिखा था, मेरा ओएस विन 8.1 x64 है इसलिए मैं 64 बिट्स विंडोज संस्करण पर हूं, जिसमें 64 बिट्स संस्करण WampServer के साथ है:/ – Eirika

+0

क्या आप निश्चित हैं। यह सुनिश्चित करने के लिए यह करो। कमांड विंडोज़, सीडी को '\ wamp \ bin \ apache \ apache2.4.9 \ bin' फ़ोल्डर में लॉन्च करें, और' httpd -V' चलाएं। 'आर्किटेक्चर 'शुरू करने वाली लाइन के आउटपुट में देखें। – RiggsFolly

उत्तर

5

मेरे लिए केवल एक चीज है कि काम किया था:

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 

"टीएस, वीसी 11" स्ट्रिंग पर ध्यान दें। इसका मतलब है कि यह थ्रेड सुरक्षित है, लेकिन आपका संस्करण थ्रेड सुरक्षित (एनटीएस) नहीं हो सकता है।

तो मैंने PHP 5.5 के लिए 64 बिट, टीएस डाउनलोड किया। मैं इस समस्या से काफी समय से निपट रहा था और अंत में, उचित चालक ने इस मुद्दे को हल किया।

+0

इससे मुझे लिनक्स पर्यावरण, lnx में दीपक पर मदद मिली। – sepehr

+1

हाँ, यह बड़ी बात है। खुशी है कि यह आपकी मदद करता है, मोंगो के साथ काम करने वाले उचित चालक के बिना दुःस्वप्न हो सकता है। – Rav

2

एक 32 बिट अपाचे कंसोल (wampp या XAMPP) की तरह यू जोड़ना चाहिए का उपयोग करते समय अपने php.ini फ़ाइल के लिए निम्न:

mongo.long_as_object= 1 

ऊपर लाइन सब देशांतर वस्तु में बदलने चाहिए, इस तरह से अपवाद नहीं होगा

आशा है कि यह उन 32 बिट उपयोगकर्ताओं को मदद मिलेगी जिनके पास यह समस्या है।