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é!
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
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 Vous pouvez installez-le manuellement via pecl en attendant:php70-mongo
brew script, si il y a un actif pull request ajouter un.pecl channel-update pecl.php.net
pecl install mongodb
echo "extension=mongodb.so" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`
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
Vous pouvez essayer d'installer le pilote mongodb avec:
sudo apt-get install php-mongodb
- d'abord nous avons besoin d'installer MongoDB dans la machine à travers les étapes mentionnées ici: https://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/
- l'étape suivante consiste à installer un pilote MongoDB à utiliser avec PHP.
le pilote MongoDB pour PHP Version 5.99.99 ou plus ancien était: https://pecl.php.net/package/mongo pour installer ceci, nous devons utiliser:
sudo apt-get install php-pear php5-dev
sudo pecl install mongo
à partir de PHP 7, c'est le nouveau pilote https://pecl.php.net/package/mongodb Pour l'installer, utiliser:
sudo pecl install mongodb
si vous utilisez Laravel framework ou des projets avec composer, alors cette bibliothèque est la plus appropriée: https://github.com/jenssegers/Laravel-MongoDB Utilisez la version 3.0.0 Pour obtenir le support de PHP 7 et Laravel 5 et utilisez l'ancienne version 2.2.2 Compositeur commande:
compositeur besoin jenssegers/mongodb
Si vous utilisez d'autres frameworks PHP sans compositeur, l'utilisation de cette bibliothèque: https://github.com/mongodb/mongo-php-library qui est également utilisé dans la bibliothèque
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.
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
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
Cela a fonctionné pour moi sur Ubuntu pour PHP7:
sudo apt-get install php7.0-mongodb
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...
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";
}
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.