it-swarm.com.ru

Установка PHP 7 MongoDB Клиент/Драйвер?

Я очень хочу начать работать с PHP 7, однако мешает одна проблема ... Я в основном использую MongoDB для базы данных, и проблема в том, что я не знаю, как установить драйвер MongoDB/клиент для PHP 7.

Моя текущая установка - PHP 5.6 и на моем Mac, и brew install php56-mongo добивается цели.

Кто-нибудь может порекомендовать, как я могу заставить это работать на моем Mac или Ubuntu установить?

Заранее спасибо и высоко ценится!

30
Vladimir Fazilov

Расширение Mongo для PHP версии 5.99.99 или старше заменено:

https://pecl.php.net/package/mongo

Вместо этого используйте более новую версию для PHP версии 7.99.99 или старше:

https://pecl.php.net/package/mongodb

Вы можете установить расширение PECL/PEAR автоматически :

pecl install mongodb

иливручную .

Classes также были изменены:

new \MongoClient(); // legacy class!

см. http://php.net/manual/en/book.mongo.php

new \MongoDB\Driver\Manager(); // new classes! 

см. http://php.net/manual/en/set.mongodb.php

Дополнительную информацию о совместимости можно найти здесь:

https://docs.mongodb.org/ecosystem/drivers/php/#compatibility

37
DanFromGermany

Драйвер MongoDB, который поддерживает PHP 7, был только выпущен 22 декабря - его вероятные нисходящие репозитории, такие как brew, не обновлялись.

Обновление подтвердило, что в настоящее время нет сценария brew php70-mongo, хотя существует активный pull-запрос для добавления.

Вы можете установить его вручную через pecl а пока:

pecl channel-update pecl.php.net

pecl install mongodb

echo "extension=mongodb.so" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`
11
developerjack

Как связать php 7.0 с MongoDB в Ubuntu 16.04 lts?

1) Установите LAMP, используя следующую ссылку. Он устанавливает Apache2, mysql и php 7.0 . https://www.digitalocean.com/community/tutorials/how-to-install-linux-Apache-mysql-php-lamp-stack-on-ubuntu- 16-04

2) Установите MongoDB Community Edition в Ubuntu, используя шаги, указанные в следующей ссылке . http://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/

3) Введите следующую команду, чтобы получить расширение mongoDB из pecl

Sudo apt install php-pear

4) Добавьте следующее в файл php.ini по адресу /etc/php/Apache2/7.0

extension=mongodb.so

Важно - классы тоже были изменены:

new MongoClient();  //Old Class

new MongoDB\Driver\Manager(); // New Class

См. - http://php.net/manual/en/set.mongodb.php

7
Ish Kav

Вы можете попробовать установить драйвер mongodb с помощью:

Sudo apt-get install php-mongodb
5
Jorge Omar Martinez
  • Сначала нам нужно установить MongoDB на машине, выполнив шаги, упомянутые здесь: https://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/
  • Следующим шагом является установка драйвера MongoDB для использования с PHP.
  • Драйвер MongoDB для PHP версии 5.99.99 или более ранней версии: https://pecl.php.net/package/mongo Для установки нам необходимо использовать:

    Sudo apt-get установить php-pear php5-dev

    Sudo pecl установить монго

  • Начиная с PHP 7, это новый драйвер https://pecl.php.net/package/mongodb Для установки используйте: Sudo pecl install mongodb

  • Если вы используете каркас Laravel или проекты с composer, то эта библиотека является наиболее подходящей: https://github.com/jenssegers/Laravel-MongoDB Используйте версию 3.0.0 для получения PHP 7 & Laravel 5 поддерживают и используют старую версию 2.2.2 Composer:

    композитор требует jenssegers/mongodb

  • Если вы используете другие PHP фреймворки без композитора, используйте эту библиотеку: https://github.com/mongodb/mongo-php-library которая также используется в вышеупомянутой библиотеке

3
ajayarjunan

Нет, устаревший драйвер, к сожалению, не поддерживает PHP7. Вот коммит и Билет JIRA , где это было официально завершено.

Новый драйвер PHP MongoDB можно найти в PECL здесь (или GitHub ).

Для установки достаточно:

pecl channel-update pecl.php.net

pecl install mongodb

echo "extension=mongodb.so" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`

Документацию для нового драйвера можно найти здесь . Я хотел бы добавить примечание из документации:

В конечном счете, это расширение не предназначено для использования в одиночку. Пользователям следует рассмотреть возможность использования этого драйвера вместе с одной или несколькими пользовательскими библиотеками PHP, такими как mongo-php-library .

Новое расширение mongodb driver/PHP гораздо более низкого уровня, чем устаревший драйвер mongo, и вам рекомендуется использовать библиотеку более высокого уровня поверх драйвера, а не использовать ее непосредственно в своем коде.

Библиотека Mongo PHP ( release ) является официальной высокоуровневой библиотекой для PHP и рекомендуется для использования в ваших проектах. Он все еще находится в бета-версии, но, похоже, это самый безопасный и перспективный путь вперед с PHP7.

Для кого-то может быть возможно портировать устаревший драйвер на PHP7, но, вероятно, в этом нет особой необходимости, поскольку существует много других проблем с устаревшим драйвером.

2
Will

Старый вопрос, но новое отличное решение. Просто используйте Mongostead7 автоматический скрипт для установки всего необходимого. У меня сработало просто отлично. Никакой дополнительной работы не требуется.

Используйте это следующим образом:

Sudo curl -sS https://raw.githubusercontent.com/zakhttp/Mongostead7/master/mongoHomestead7.sh | Sudo sh
2
Aleksandar

Дополняю ответы и публикую то, что у меня работает:

1 следовал этому руководству, чтобы установить лампу https://www.digitalocean.com/community/tutorials/how-to-install-linux-Apache-mysql-php-lamp-stack-on-ubuntu-16-04 (Третий шаг нужен только для установки клиента Монго)

2 $ Sudo apt-get install php7.0-dev

3 $ Sudo pecl install mongodb

4 $ Sudo nano /etc/php/7.0/Apache2/php.ini

Добавьте следующую строку в файл:

extension = mongo.so;

(Возможно, вам потребуется указать точное местоположение файла. В моем случае Файл находился в /usr/lib/php/20151012/mongodb.so.)

И это все, что нужно для установки только клиента mongo для php 7.0

Я дополняю ответ Пранша Тивари

2
Guillermo García

Это работало для меня на Ubuntu для PHP7:

Sudo apt-get установить php7.0-mongodb

1
Parth Vora

Я использую PHP версии 7.0 на Ubuntu 16.04. Я даю подробную информацию для установки драйвера/клиента mongo. Сначала я вручную установил mongodb, а затем драйвер mongodb-php.

1) Установка монго дб. Введите следующие команды:

$ Sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927

$ echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse" | Sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list

$ Sudo apt-get update

$ Sudo apt-get install -y mongodb-org

Чтобы правильно запустить Mongdb как сервис, то есть автоматически запустить Mongodb при запуске системы, выполните следующие действия:

Создайте файл mongodb.service в/etc/systemd/system /, введя команду:

$ Sudo nano /etc/systemd/system/mongodb.service

Вставьте в него следующее содержимое:

[Unit]
Description=High-performance, schema-free document-oriented database
After=network.target

[Service]
User=mongodb
ExecStart=/usr/bin/mongod --quiet --config /etc/mongod.conf

[Install]
WantedBy=multi-user.target

Затем введите следующие команды:

$ Sudo systemctl start mongodb

$ Sudo systemctl enable mongodb

2) Установка драйвера mongo-php:

$ Sudo pecl install mongodb

Также вы можете получить сообщение об ошибке: phpize not found. Phpize - это команда, которая используется для создания среды сборки. Эта ошибка может появиться во время установки любого расширения pecl. Чтобы решить эту проблему, команда phpize не найдена, пользователь должен установить пакет php5-dev. Для его установки введите команду:

 $ Sudo apt-get install php7.0-dev

Затем в файле php.ini, который находится в каталоге /etc/php/7.0/Apache2, добавьте расширение dong mongo:

$ Sudo nano /etc/php/7.0/Apache2/php.ini 

Добавьте следующую строку в файл:

extension = mongo.so;

(Возможно, вам потребуется указать точное местоположение файла. В моем случае файл находился в /usr/lib/php/20151012/mongodb.so.)

Таким образом, dong монго устанавливается вместе с его драйвером.

3) Теперь имейте в виду, что классы mongo-php были изменены. Большинство доступных ресурсов в сети дают решения, использующие старые классы, которые заменяются. Ниже приведены ссылки, на которые вы можете ссылаться:

http://php.net/manual/en/set.mongodb.php

http://zetcode.com/db/mongodbphp/

Вот несколько команд для основных операций с базой данных:

$mng = new MongoDB\Driver\Manager(); // Driver Object created

Чтобы вставить данные в базу данных:

$bulk = new MongoDB\Driver\BulkWrite;

$doc = ["_id" => new MongoDB\BSON\ObjectID, "data" => $someData, "info" => $someInfo];

$bulk->insert($doc);

$mng->executeBulkWrite('dbName.collectionName', $bulk);

Для получения данных:

$query = new MongoDB\Driver\Query([]); 

$rows = $mng->executeQuery("dbName.collectionName", $query);

foreach ($rows as $row) 
    {
         echo "$row->data - $row->info\n";
    }
1
Pransh Tiwari

UBUNTU 16.0.4 (07.12.2016)

установить драйверы PHP-MONGODB: Командиры:
- Sudo pecl установить mongodb -> Результат: Процесс сборки завершен успешно Установка '/usr/lib/php/20151012/mongodb.so' установить нормально: канал: //pecl.php.net/mongodb-1.2.0 Параметр конфигурации "php_ini" не установлен в расположение php.ini Вы должны добавить "extension = mongodb.so" в php.ini

                    -> la librairie se trouve dans "/usr/lib/php/20151012/mongodb.so"
            - Sudo systemctl restart Apache2.service
            https://secure.php.net/manual/en/mongodb.installation.pecl.php
            - create 2 new files called "30-mongodb.ini" in both path to add the extension to your server:
                -/etc/php/7.0/fpm/conf.d/30-mongodb.ini
                -/etc/php/7.0/cli/conf.d/30-mongodb.ini
                Commandes :
                    Sudo nano /etc/php/7.0/fpm/conf.d/30-mongodb.ini

                        -> add "extension=mongodb.so"

                    Sudo nano /etc/php/7.0/cli/conf.d/30-mongodb.ini

                        -> add "extension=mongodb.so"


            - Test if the mongodb extension is running in your server :
                Commandes :
                    php --ini

установить DoctrineMongoDBBundle: http://symfony.com/doc/current/bundles/DoctrineMongoDBBundle/index.html , http://www.doctrine-project.org/2016/06/09/odm-1-1-0-and-1-0-6.html ,

    Commandes :
        - cd
        - cd my_project_name
        - ls -a composer*
            -> résultat : composer.json  composer.lock
        - Sudo nano composer.json
        - Add to the composer.json in "require" array
            "doctrine/mongodb-odm": "^1.0",
            "doctrine/mongodb-odm-bundle": "^3.0"
        - Add to the composer.json in "require" array
            "alcaeus/mongo-php-adapter": "^1.0",
            "ext-mongo": "*"
        - Add a new array :
            "provide": 
            {
                "ext-mongo": "1.6.12"
            }
        - Move 
        Sudo cp -i /usr/lib/php/20151012/mongodb.so /etc/php/7.0/cli

Чтобы дать решение мне нужно не менее 10 репутации, чтобы опубликовать ...

1
Tiri

Если вы испытываете трудности с тем, чтобы ваш старый код PHP5 работал с PHP7, вам может понадобиться одно из решений: https://github.com/alcaeus/mongo-php-adapter

Я заметил, что в большинстве случаев включение библиотеки адаптера - это все, что вам нужно для того, чтобы ваш старый код PHP5 работал правильно под PHP7 с новым подходом драйвер/библиотека.

Тогда я настоятельно рекомендую перенести ваш код в новую библиотеку MongoDB PHP ( https://github.com/mongodb/mongo-php-library ) или использовать собственный драйвер для выиграть от увеличения скорости.

0
Tomi

Я тоже почти сдался. Для драйвера MongoDB для PHP 7x Ubuntu 18.04 Pecl не будет работать. Вместо этого попробуйте:

Sudo apt-get install php-mongodb  

Затем в папке вашего проекта установите библиотеку mongodb https://docs.mongodb.com/php-library/current/tutorial/install-php-library/

composer require mongodb/mongodb
composer install

Который обращается к функциям нижнего уровня, предоставляемым водителем.

Наконец, перейдите на php.ini и добавьте

extension = mongo.so

и перезапустите Apache

Чтобы проверить, попробуйте добавить это в файл php:

<?php
     require_once __DIR__ . "/vendor/autoload.php";
     $collection = (new MongoDB\Client)->test->users;
     print_r($collection);
?>
0
FredTheWebGuy