Подтвердить что ты не робот

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

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

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

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

Спасибо заранее и очень благодарен!

4b9b3361

Ответ 1

Расширение 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

или вручную.

Также были изменены классы :

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

Ответ 2

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

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

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

pecl channel-update pecl.php.net

pecl install mongodb

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

Ответ 3

Как подключить 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 на 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

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

Ответ 4

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

sudo apt-get install php-mongodb

Ответ 5

  • Сначала нам нужно установить 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 install php-pear php5-dev

    sudo pecl install mongo

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

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

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

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

Ответ 6

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

Новый 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 драйвер/расширение PHP намного более низкоуровневый, чем предыдущий драйвер mongo, и вам рекомендуется использовать более высокоуровневую библиотеку поверх драйвера, а не использовать ее непосредственно в вашем код.

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

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

Ответ 7

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

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

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

Ответ 8

В дополнение к ответам и публикации того, что сработало для меня:

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

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

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

Ответ 9

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

sudo apt-get install php7.0-mongodb

Ответ 10

UBUNTU 16.0.4 (07.12.2016)

установить драйверы PHP-MONGODB:   Командиры:
              - sudo pecl install mongodb               - > résultat:                       Процесс сборки успешно завершен                       Установка '/usr/lib/php/20151012/mongodb.so'                       установить ok: channel://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 репутации, чтобы опубликовать...

Ответ 11

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

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

$ 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 не найден. Phpize - это команда, которая используется для создания среды сборки. Эта ошибка может появиться во время установки любого расширения расширения. Для решения этой проблемы команда phpize не найдена, пользователь должен установить пакет php5-dev. Чтобы установить его, введите команду:

 $ sudo apt-get install php7.0-dev

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

$ sudo nano /etc/php/7.0/apache2/php.ini 

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

extension = mongo.so;

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

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

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";
    }

Ответ 12

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

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

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

Ответ 13

Я тоже почти сдался. Для драйвера 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);
?>