Установка клиента / драйвера PHP 7 MongoDB?
Я очень хочу начать работу с PHP 7, но одна проблема мешает … Я в первую очередь использую MongoDB для базы данных, и проблема в том, что я не знаю, как установить драйвер / клиент MongoDB для PHP 7 ,
Моя текущая установка – это PHP 5.6, а на моем Mac и brew install php56-mongo
делает трюк.
Может ли кто-нибудь порекомендовать, как я могу заставить это работать на моем Mac или установке Ubuntu?
Спасибо заранее и высоко оценили!
11 Solutions collect form web for “Установка клиента / драйвера PHP 7 MongoDB?”
Расширение 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
Драйвер MongoDB, поддерживающий PHP 7, был выпущен только 22 декабря – его вероятные репозитории ниже, чем пиво, не обновились.
Обновление подтверждено, что в настоящее время нет php70-mongo
, хотя есть активный запрос на добавление, чтобы добавить его.
Вы можете установить его вручную через pecl, тем временем:
pecl channel-update pecl.php.net pecl install mongodb echo "extension=mongodb.so" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`
Как подключить 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
- Сначала нам нужно установить 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, которая также используется в вышеупомянутой библиотеке
Нет, устаревший драйвер не поддерживает 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
/ расширение PHP намного более низкоуровневый, чем mongo
драйвер mongo
, и вам предлагается использовать более высокоуровневую библиотеку поверх драйвера, а не использовать ее непосредственно в вашем коде.
Mongo PHP Library ( релизы ) является официальной высокоуровневой библиотекой для PHP, и это то, что рекомендуется использовать в ваших проектах. Он по-прежнему находится в бета-версии, но это, по-видимому, самый безопасный и наиболее перспективный путь вперед с PHP7.
Возможно, кому-то удастся перенести устаревший драйвер на PHP7, но, вероятно, это не так уж и нужно, так как есть много других проблем с устаревшим драйвером.
Старый вопрос, но новое отличное решение. Просто используйте автоматический скрипт Mongostead7 для установки всех необходимых материалов. Работал для меня просто отлично. Никакой дополнительной работы не требуется.
Используйте его следующим образом:
sudo curl -sS https://raw.githubusercontent.com/zakhttp/Mongostead7/master/mongoHomestead7.sh | sudo sh
Это работало для меня на Ubuntu для PHP7:
sudo apt-get install php7.0-mongodb
UBUNTU 16.0.4 (07.12.2016)
установите драйверы PHP-MONGODB: Commandes:
– sudo pecl install mongodb -> résultat: Процесс сборки успешно завершен Установка «/usr/lib/php/20151012/mongodb.so» install 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
и-> 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
и-> 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 репутации, чтобы опубликовать …
Вы можете попробовать установить драйвер mongodb с помощью:
sudo apt-get install php-mongodb
Если вы боретесь с тем, что ваш старый код PHP5 работает с PHP7, одним из решений, которое вы, возможно, захотите изучить, является https://github.com/alcaeus/mongo-php-adapter
Я заметил, что в большинстве случаев, включая библиотеку адаптеров, все, что вам нужно сделать, чтобы ваш старый код PHP5 работал правильно в PHP7 с новым подходом к драйверу / библиотеке.
Затем я настоятельно рекомендую вам перенести свой код в новую библиотеку PHP MongoDB ( https://github.com/mongodb/mongo-php-library ) или использовать собственный драйвер для получения выгоды от повышения скорости.
Я использую 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
$ sudo apt-get update$ 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
того, как[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"; }