У меня большая проблема с моей средой разработки.
Контекст:
Мой компьютер: Win 8.1 x64
Мой WampServer устанавливает: x64
Мой MongoDB установить: x64 от http://www.mongodb.org/downloads
Я установил расширение PHP от http://pecl.php.net/package/mongo.
Моя проблема в том, что наш производственный сервер хранит в базе данных около 64 бит INT.
Когда я пытаюсь получить доступ к этим данным в своей среде разработки, я получаю:
MongoCursorException
Не может изначально представлять длинные 1108547148863410176 на этой платформе
В интернете я обнаружил, что параметр mongoDB, называемый «mongo.native_long = 1», необходим для использования 64-битного INT на 64-битной архитектуре.
Но когда я пытаюсь добавить этот параметр в мой файл «php.ini», сервер не запускается и выдает ошибку вроде:
[19-Nov-2014 18:25:52 UTC] Неустранимая ошибка PHP: запуск PHP: во избежание повреждения данных нельзя включать параметр mongo.native_long на 32-разрядных платформах в поле «Неизвестно» в строке 0
Моя библиотека расширений mongoDB построена на 32-битной или я что-то пропустил?
Для меня единственное, что сработало, было:
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).
Поэтому я скачал 64bit, TS для PHP 5.5. Я занимался этой проблемой долгое время и, наконец, надлежащий водитель решил эту проблему.
При использовании 32-битной консоли Apache (например, wampp или xampp) вы должны добавить в файл php.ini следующее:
mongo.long_as_object= 1
Приведенная выше строка должна преобразовать все длинные объекты в объект, таким образом исключение не произойдет.
Надеюсь, что это поможет всем 32-битным пользователям, которые имеют эту проблему.
У меня была такая же проблема с WAMP x64 на Windows X64. Мое решение было обновить библиотеку Mongo до 1.6.14
C: \ wamp64 \ bin \ php \ php5.6.35 в php.ini добавить: mongo.long_as_object = 1
а также
C: \ wamp64 \ bin \ apache \ apache2.4.33 \ bin в php.ini add: mongo.long_as_object = 1