2014-11-19 12 views
5

Tôi có một vấn đề lớn với môi trường phát triển của mình.MongoDB trên Wamp x64 (win x64) = mongo.native_long lỗi

Bối cảnh:
Máy tính của tôi: Win 8.1 x64
My WampServer cài đặt: x64
My MongoDB cài đặt: x64 từ http://www.mongodb.org/downloads

Tôi đã cài đặt phần mở rộng php từ http://pecl.php.net/package/mongo.

Vấn đề của tôi là máy chủ sản xuất của chúng tôi lưu trữ một số 64 bit INT vào cơ sở dữ liệu.

Khi tôi cố gắng, trong môi trường phát triển của tôi, để truy cập vào dữ liệu này, tôi đã có:

MongoCursorException

Cannot natively represent the long 1108547148863410176 on this platform

tôi tìm thấy trên internet mà một tham số của MongoDB gọi là "mongo.native_long = 1" là cần thiết sử dụng 64 bit INT trên kiến ​​trúc 64 bit.
Nhưng khi tôi cố gắng thêm param này trong tôi tập tin "php.ini", máy chủ không bắt đầu và đưa cho tôi một lỗi như:

[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

Liệu mở rộng DLL MongoDB tôi được xây dựng trên 32 Bit hoặc Tôi bỏ lỡ một cái gì đó để làm gì?

+0

Sau đó, tôi giả sử môi trường phát triển của bạn là hệ thống 32 bit. Cả hai Windows và do đó WAMPServer là 32bit hoặc bạn đã cài đặt WAMPServer 32 bit trên một hệ điều hành 64bit.Hãy nhớ rằng bạn không thể cài đặt WAMPserver 64 bit trên hệ điều hành 32 bit. – RiggsFolly

+0

Như tôi đã viết ở đầu của chủ đề, hệ điều hành của tôi là Win 8.1 x64 vì vậy tôi đang ở trên một phiên bản 64 bit windows với phiên bản 64 bit của WampServer:/ – Eirika

+0

Bạn có chắc chắn không. Làm điều này để chắc chắn. Khởi chạy các cửa sổ lệnh, CD vào thư mục '\ wamp \ bin \ apache \ apache2.4.9 \ bin' và chạy' httpd -V'. Tìm đầu ra của dòng bắt đầu từ 'Architecture'. – RiggsFolly

Trả lời

5

Đối với tôi, điều duy nhất mà làm việc là:

ini_set('mongo.long_as_object', 1); 

Hy vọng nó sẽ tiết kiệm thời gian của một ai đó. Đó là một trong những điều ngu xuẩn khiến bạn tự hỏi: "Tại sao tôi lại trở thành một lập trình viên?"

EDIT: nhận lái xe thích hợp từ http://pecl.php.net/package/mongo giúp tôi. Tôi đã tải xuống trình điều khiển mới nhất. Kiểm tra phiên bản của bạn bằng lệnh phpinfo(). Ví dụ. đối với tôi, trên Win7 64 bit, đó là:

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

Lưu ý chuỗi "TS, VC11". Nó có nghĩa là Thread Safe, nhưng phiên bản của bạn có thể không phải là chủ đề an toàn (NTS).

Vì vậy, tôi đã tải xuống 64bit, TS cho PHP 5.5. Tôi đã đối phó với vấn đề này thời gian dài và cuối cùng, trình điều khiển thích hợp giải quyết vấn đề này.

+0

điều này đã giúp tôi trên lampp trong môi trường Linux, tnx. – sepehr

+1

Vâng, đây là điều lớn. Vui mừng nó đã giúp bạn, mà không có trình điều khiển thích hợp làm việc với mongo có thể là cơn ác mộng. – Rav

2

Khi sử dụng 32 bit giao diện điều khiển apache (như Wampp hoặc xampp) u nên thêm dòng sau vào file php.ini của bạn:

mongo.long_as_object= 1 

Dòng trên sẽ chuyển đổi tất cả chờ đợi phản đối, theo cách này ngoại trừ sẽ không xảy ra.

Hy vọng điều này sẽ giúp tất cả người dùng 32 bit gặp sự cố này.

Các vấn đề liên quan