2016-04-29 3 views
4

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

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

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

+0

umm, если вы используете php7, почему вы пытаетесь установить пакет php5? возможно, это php7-mongo? –

+0

@MarcB, я также попробовал 'sudo apt-get install php7-mongo', но не получил никакого положительного результата –

+0

, поэтому взгляните на репозиторий 16.04lts и выясните, что такое имя пакета. или даже что-то вроде 'dpkg -L | grep -i mongo' –

ответ

5

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

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

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

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

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

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

0

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

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