Installer le Client/pilote MongoDB PHP 7?

je suis très impatient de commencer à travailler avec PHP 7 mais un problème se pose... J'utilise principalement MongoDB pour la base de données, et le problème est que je ne sais pas comment installer le pilote/client MongoDB pour PHP 7.

mon installation actuelle est PHP 5.6 et sur mon Mac et brew install php56-mongo le truc.

Est-ce que quelqu'un peut recommander comment je peux obtenir ce travail sur mon Mac ou une installation Ubuntu?

Merci d'avance et très apprécié!

29
demandé sur Will 2015-12-28 04:51:39

12 réponses

l'extension Mongo pour la Version PHP 5.99.99 ou plus a été remplacé:

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

utilisez le plus récent pour la Version PHP 7.99.99 ou plus à la place:

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

vous pouvez installer une extension PECL / PEAR automatiquement:

pecl install mongodb

ou manuellement.

classes ont été modifiées:

new \MongoClient(); // legacy class!

voir http://php.net/manual/en/book.mongo.php

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

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

des informations supplémentaires concernant la compatibilité peuvent être trouvées ici:

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

35
répondu DanFromGermany 2016-05-19 11:51:13

le pilote MongoDB qui supporte PHP 7 était seulement sortie le 22 décembre

mise à jour confirmée Il n'y a actuellement pas de php70-mongo brew script, si il y a un actif pull request ajouter un.

Vous pouvez installez-le manuellement via pecl en attendant:

pecl channel-update pecl.php.net

pecl install mongodb

echo "extension=mongodb.so" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`
10
répondu developerjack 2015-12-29 09:14:10

comment connecter php 7.0 avec MongoDB dans ubuntu 16.04 lts?

1)Installez LAMP en utilisant le lien suivant. Il installe Apache2, mysql et php 7.0. https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-ubuntu-16-04

2)installez L'édition de la communauté MongoDB sur Ubuntu en utilisant les étapes suivantes: lien. http://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/

3)Tapez la commande suivante pour obtenir l'extension mongoDB de pecl

sudo apt install php-pear

4)ajouter ce qui suit Au php.fichier ini /etc/php/apache2/7.0

extension=mongodb.so

Important - Les classes ont été modifiées:

new MongoClient();  //Old Class

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

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

7
répondu Ish Kav 2016-08-08 16:57:29

Vous pouvez essayer d'installer le pilote mongodb avec:

sudo apt-get install php-mongodb
4
répondu Jorge Omar Martinez 2017-06-26 16:42:06
3
répondu ajayarjunan 2016-02-23 14:14:24

non, le pilote legacy ne supporte pas PHP7, malheureusement. Ici le commit et Jira Ticket où cela a été officiellement finalisée.

le nouveau pilote PHP MongoDB peut être trouvé dans PECL ici (ou GitHub).

Pour l'installer, il suffit de:

pecl channel-update pecl.php.net

pecl install mongodb

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

La documentation pour le nouveau pilote peut être trouvé ici. J'aimerais inclure une note à partir de la documentation:

finalement, cette extension n'est pas destinée à être utilisée seule. Les utilisateurs devraient envisager d'utiliser ce pilote avec une ou plusieurs bibliothèques PHP d'userland, comme mongo-php-bibliothèque.

La mongodb pilote / extension PHP est beaucoup plus faible au niveau de l'héritage mongo pilote, et vous êtes encouragés à utiliser une bibliothèque de niveau supérieur sur le pilote plutôt que de l'utiliser directement dans votre code.

Mongo PHP Bibliothèque (communiqués) est la bibliothèque officielle de haut niveau pour PHP, et c'est ce qui est recommandé d'utiliser dans vos projets. Il est toujours en version bêta, mais cela semble toujours être la voie la plus sûre et la plus sûre pour L'avenir avec PHP7.

Il pourrait être possible pour quelqu'un port de l'héritage de pilote pour PHP7, mais il n'y a probablement pas beaucoup d'un besoin, il y a beaucoup d'autres problèmes avec le pilote.

2
répondu Will 2016-01-04 02:59:49

ancienne question, mais Nouvelle excellente solution. Suffit d'utiliser Mongostead7 script automatisé pour installer toutes les choses nécessaires. Travaillé pour moi très bien. Aucun travail supplémentaire n'est nécessaire.

Utiliser comme suit:

sudo curl -sS https://raw.githubusercontent.com/zakhttp/Mongostead7/master/mongoHomestead7.sh | sudo sh
2
répondu Aleksandar 2016-09-06 12:48:35

en Complément des réponses et de la publication de ce qui a fonctionné pour moi:

1 a suivi ce guide pour installer lamp https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-ubuntu-16-04 (la troisième étape est nécessaire uniquement pour installer le client mongo)

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

3 $ sudo pecl install mongodb

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

Ajouter la ligne suivante dans le fichier:

extension = mongo.de la sorte;

(vous pourriez avoir besoin de préciser l'emplacement exact du fichier. Dans mon cas le fichier est dans /usr/lib/php/20151012/mongodb.donc.)

Et c'est tout pour l'installation il suffit de la mongo client pour php 7.0

je complète la réponse de Pransh Tiwari

2
répondu Guillermo García 2017-12-29 04:25:56

Cela a fonctionné pour moi sur Ubuntu pour PHP7:

sudo apt-get install php7.0-mongodb

1
répondu Parth Vora 2016-12-07 07:25:11

installer les pilotes PHP-MONGODB : Commandes:

- sudo pecl installer mongodb -> résultat : Processus de construction achevé avec succès Installing '/usr/lib/php/20151012/mongodb.alors... installer ok: channel: / / pecl.php.net / mongodb-1.2.0 l'option de configuration "php_ini" n'est pas définie à php.ini emplacement Vous devez ajouter "extension=mongodb.ainsi" à 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

installer 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

pour donner la solution j'ai besoin d'au moins 10 réputation à poster...

1
répondu Tiri 2016-12-07 14:15:11

j'utilise la version 7.0 de php sur ubuntu 16.04. Je donne des informations détaillées pour l'installation du pilote/client mongo. D'abord j'ai installé manuellement mongodb et ensuite le pilote mongodb-php pour cela.

1) Installation de mongo db. Entrez les commandes suivantes:

$ 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

pour lancer correctement Mongdb en tant que service, c'est-à-dire démarrer automatiquement Mongodb lorsque le système démarre, suivez les étapes suivantes:

Créer un fichier de mongodb.service /etc/systemd/system/ en entrant la commande:

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

Coller le contenu suivant:

[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

Puis entrez les commandes suivantes:

$ sudo systemctl start mongodb

$ sudo systemctl enable mongodb

2) Installation du pilote mongo-php:

$ sudo pecl install mongodb

vous pourriez aussi recevoir une erreur: phpize not found. Phpize est une commande qui est utilisée pour créer un environnement de construction. Cette erreur peut apparaître lors de l'installation de toute extension pecl. Pour résoudre ce problème de la phpize commande non trouvée,l'utilisateur doit installer le paquet php5-dev. Pour l'installer, entrez la commande:

 $ sudo apt-get install php7.0-dev

Puis dans le php.fichier ini qui est dans le répertoire /etc/php/7.0/apache2, ajoutez l'extension mongo db:

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

Ajouter la ligne suivante dans le fichier:

extension = mongo.de la sorte;

(vous pourriez avoir besoin de préciser l'emplacement exact du fichier. Dans mon cas, le fichier est dans /usr/lib/php/20151012/mongodb.donc.)

donc le mongo db est installé avec son pilote.

3) gardez à l'esprit que les classes mongo-php ont été modifiées. La plupart des ressources disponibles dans le réseau donnent des solutions en utilisant les anciennes classes qui sont dépassées. Voici les liens auxquels vous pouvez vous référer:

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

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

voici quelques commandes pour la base de données de base opérations:

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

Pour insérer des données dans la base de données:

$bulk = new MongoDB\Driver\BulkWrite;

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

$bulk->insert($doc);

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

Pour l'extraction de données:

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

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

foreach ($rows as $row) 
    {
         echo "$row->data - $row->info\n";
    }
1
répondu Pransh Tiwari 2017-04-04 17:18:21

si vous avez du mal à faire fonctionner votre ancien code PHP5 avec PHP7, une solution que vous pourriez vouloir examiner est https://github.com/alcaeus/mongo-php-adapter

j'ai remarqué que dans la plupart des cas, y compris la bibliothèque adaptateur est tout ce que vous devez faire pour que votre ancien code PHP5 fonctionne correctement sous PHP7 avec la nouvelle approche pilote / bibliothèque.

alors je vous suggère fortement de migrer votre code vers la nouvelle bibliothèque PHP MongoDB (https://github.com/mongodb/mongo-php-library) ou que vous utilisez le pilote natif pour bénéficier des gains de vitesse.

0
répondu Tomi 2016-07-12 14:16:17