web-dev-qa-db-fra.com

Installer le PHP 7 Client/Pilote MongoDB?

J'ai très hâte de commencer à travailler avec PHP 7, mais un problème me gêne ... J'utilise principalement MongoDB pour la base de données. Le problème est que je ne sais pas comment installer le pilote MongoDB client pour PHP 7.

Mon installation actuelle est PHP 5.6 et sur mon Mac et brew install php56-mongo fait l'affaire.

Quelqu'un peut-il me dire comment cela peut fonctionner sur mon Mac ou sur une installation Ubuntu?

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

30
Vladimir Fazilov

L'extension Mongo pour PHP version 5.99.99 ou antérieure a été remplacée:

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

Utilisez la version la plus récente pour PHP Version 7.99.99 ou une version antérieure:

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

Vous pouvez installer une extension PECL/PEAR automatiquement :

pecl install mongodb

oumanuellement .

Les classes ont aussi été changés:

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

37
DanFromGermany

Le pilote MongoDB qui prend en charge PHP 7 était seulement publié le 22 décembre - ses référentiels en aval probables comme brew n'ont pas été mis à jour.

Mise à jour confirmée, il n’existe actuellement aucun script php70-mongo brew, bien qu’il existe une demande active pull pour en ajouter un.

Vous pourrez peut-être l'installer 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*||"`
11
developerjack

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 MongoDB Community sur Ubuntu en suivant les étapes du lien suivant: . 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) Ajoutez ce qui suit dans le fichier php.ini à /etc/php/Apache2/7.0

extension=mongodb.so

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

new MongoClient();  //Old Class

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

Référez-vous - http://php.net/manual/en/set.mongodb.php

7
Ish Kav

Vous pouvez essayer d'installer le pilote mongodb avec:

Sudo apt-get install php-mongodb
5

Non, le pilote existant ne prend malheureusement pas en charge PHP7. Voici le commit et le JIRA Ticket où cela a été officiellement finalisé.

Vous trouverez le nouveau pilote PHP MongoDB dans PECL ici (ou GitHub ).

Pour 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 du nouveau pilote peut être trouvée ici . J'aimerais inclure une note de la documentation:

En fin de compte, cette extension n’est pas destinée à être utilisée seule. Les utilisateurs doivent envisager d'utiliser ce pilote avec une ou plusieurs bibliothèques PHP, telles que mongo-php-library .

La nouvelle extension mongodb driver/PHP est beaucoup plus simple que l'ancien pilote mongo et vous êtes encouragé à utiliser une bibliothèque de niveau supérieur au-dessus du pilote plutôt que de l'utiliser directement dans votre code.

La bibliothèque Mongo PHP ( releases ) est la bibliothèque officielle de haut niveau pour PHP. Il est recommandé de l'utiliser dans vos projets. Il est toujours en version bêta, mais cela semble toujours être le chemin le plus sûr et le plus sûr pour l'avenir avec PHP7.

Il est peut-être possible que quelqu'un porte le pilote hérité vers PHP7, mais il n'est probablement pas vraiment nécessaire, car il existe de nombreux autres problèmes avec le pilote hérité.

2
Will

Vieille question, mais nouvelle excellente solution. Utilisez simplement Mongostead7 script automatisé pour installer tous les éléments nécessaires. Travaillé pour moi très bien. Aucun travail supplémentaire nécessaire.

Utilisez-le comme suit:

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

Compléter les réponses et publier ce qui a fonctionné pour moi:

J'ai suivi ce guide pour installer lampe https://www.digitalocean.com/community/tutorials/how-to-install-linux-Apache-mysql-php-lamp-stack-on-ubuntu-16-04 (La troisième étape n'est nécessaire que 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

Ajoutez la ligne suivante dans le fichier:

extension = mongo.so;

(Vous devrez peut-être spécifier l'emplacement exact du fichier. Dans mon cas, le fichier se trouvait dans /usr/lib/php/20151012/mongodb.so.)

Et c'est tout pour installer le client Mongo pour PHP 7.0

Je complète la réponse de Pransh Tiwari

2
Guillermo García

Cela a fonctionné pour moi sur Ubuntu pour PHP7:

Sudo apt-get install php7.0-mongodb

1
Parth Vora

J'utilise la version 7.0 de PHP sur Ubuntu 16.04. Je donne une information détaillée sur l’installation du pilote/client mongo . J'ai d’abord installé manuellement mongodb, puis le pilote mongodb-php correspondant.

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

Afin de lancer correctement Mongdb en tant que service, c'est-à-dire de démarrer automatiquement Mongodb au démarrage du système, procédez comme suit:

Créez le fichier mongodb.service dans/etc/systemd/system/en entrant la commande suivante:

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

Collez-y 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

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

 $ Sudo apt-get install php7.0-dev

Ensuite, dans le fichier php.ini qui se trouve dans le répertoire /etc/php/7.0/Apache2, ajoutez l’extension mongo db:

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

Ajoutez la ligne suivante dans le fichier:

extension = mongo.so;

(Vous devrez peut-être spécifier l'emplacement exact du fichier. Dans mon cas, le fichier se trouvait dans /usr/lib/php/20151012/mongodb.so.)

Donc, la base de données mongo est installée avec son pilote.

3) Gardez maintenant à l’esprit que les classes mongo-php ont été modifiées. La plupart des ressources disponibles sur le réseau proposent des solutions utilisant d’anciennes classes, qui sont remplacées. Vous trouverez ci-dessous 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 les opérations de base de la base de données:

$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 récupérer des données:

$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)

installez les pilotes PHP-MONGODB: Commandes:
- Sudo pecl installer mongodb -> résultat: Processus de construction terminé avec succès Installation de '/usr/lib/php/20151012/mongodb.so' installer ok: channel: //pecl.php.net/mongodb-1.2.0 L'option de configuration "php_ini" n'est pas définie sur l'emplacement php.ini Vous devriez ajouter "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

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, il me faut au moins 10 points de réputation pour poster ...

1
Tiri

Si vous avez du mal à faire fonctionner votre ancien code PHP5 avec PHP7, vous pouvez envisager une solution: https://github.com/alcaeus/mongo-php-adapter

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

Ensuite, je vous suggère fortement de migrer votre code vers la nouvelle bibliothèque MongoDB PHP ( https://github.com/mongodb/mongo-php-library ) ou d'utiliser le pilote natif pour profiter des gains de vitesse.

0
Tomi

J'ai failli abandonner aussi. Pour le pilote MongoDB pour PHP 7x, Ubuntu 18.04 Pecl ne fonctionnera pas. Au lieu de cela, essayez:

Sudo apt-get install php-mongodb  

Ensuite, dans la base de votre dossier de projet, installez la bibliothèque mongodb https://docs.mongodb.com/php-library/current/tutorial/install-php-library/

composer require mongodb/mongodb
composer install

Qui accède aux fonctions de niveau inférieur fournies par le pilote.

Enfin, allez sur php.ini et ajoutez

extension = mongo.so

et redémarrez Apache

Pour tester, essayez d'ajouter ceci à un fichier php:

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