Как установить PHP-расширение Mongodb в Ubuntu 16.04 LTS

Я использую Ubuntu 16.04 LTS и хочу использовать Mongodb с PHP. Для этого я думал, что sudo apt-get install php5-mongo (что достаточно для Ubuntu 14.04 LTS) будет достаточно, но я ошибался. Я получаю сообщение об ошибке E: Unable to locate package php5-mongo.

Я только что обновился до Ubuntu 16.04 LTS и хочу использовать mongodb с PHP. Запущенная версия PHP PHP Version 7.0.4-7ubuntu2.

Итак, что я могу сделать, чтобы решить эту проблему?


person Vikash Kumar    schedule 29.04.2016    source источник
comment
ммм, если вы используете php7, почему вы пытаетесь установить пакет php5? возможно, это php7-mongo?   -  person Marc B    schedule 29.04.2016
comment
@MarcB, я тоже пробовал sudo apt-get install php7-mongo это, но не получил положительного результата   -  person Vikash Kumar    schedule 30.04.2016
comment
так что загляните в репозиторий 16.04lts и выясните, как называется пакет. или даже что-то вроде dpkg -L|grep -i mongo   -  person Marc B    schedule 30.04.2016


Ответы (2)


Боюсь, вам немного не повезло в данный момент. Текущая ситуация такова, что есть два расширения MongoDB:

  • «php-mongo», который является «старым»; Это расширение поддерживает версии до PHP 5.*, но не PHP7. Для него запланированы только исправления ошибок;
  • «php-mongodb», который является «новым»; Это расширение поддерживает PHP5, а также PHP7;

Теперь проблема в том, что новый не совместим со старым, так как все внутренности у них совершенно разные. К сожалению, очень мало мест, где используются примеры с новым синтаксисом, так как абсолютное большинство кода, связанного с Mongo, написано с использованием старого расширения.

На данный момент, если вы перешли на PHP7, ваш единственный вариант — использовать «новое» расширение, что, в свою очередь, означает, что ваш предыдущий код перестанет работать.

Я видел пару попыток создать полифилл для того, чтобы сделать эти две миграции возможными (пример: https://github.com/alcaeus/mongo-php-adapter), однако, поскольку я сам не пробовал, я не могу сказать, насколько хорошо это работает.

Похоже, что эта библиотека http://mongodb.github.io/mongo-php-library/ должен закрыть пробел - после того, как я попробовал, я считаю, что он должен охватывать большую часть «старых» функций без слишком большого обновления кода.

person KlausK    schedule 04.05.2016

Если некоторым из вас все еще интересно использовать простую оболочку для новой библиотеки, как сказано в этом ответе: https://stackoverflow.com/a/48086676/2569789 Я поддерживаю один для этой цели, и вы можете найти его здесь: https://github.com/ThomasSquall/PHP7MongoDriver

На сегодняшний день он охватывает всего несколько методов, но я собираюсь постоянно улучшать его и надеюсь, что тоже хотел бы внести свой вклад :)

person ThomasSquall    schedule 03.01.2018