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é!
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
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*||"`
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
Vous pouvez essayer d'installer le pilote mongodb avec:
Sudo apt-get install php-mongodb
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é.
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
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
Cela a fonctionné pour moi sur Ubuntu pour PHP7:
Sudo apt-get install php7.0-mongodb
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";
}
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 ...
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.
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);
?>