Für den Zugriff von PHP7.2 auf eine MongoDB 4.2 Datenbank braucht man einen Client Treiber. Die Installation unter Ubuntu Server 18.04 LTE möchte ich hier beschreiben.
1. Pakete installieren
sudo apt install php-pear php7.2-dev
2. Treiber MongoDB installieren
sudo pecl install mongodb
3. Konfigurationsdatei erstellen
sudo sh -c 'echo "extension=mongodb.so" > /etc/php/7.2/mods-available/mongodb.ini'
4. Konfiguration aktivieren
sudo phpenmod mongodb
5. Funktion prüfen
php -i |grep mongodb
Jetzt sollte der MongoDB Treiber in PHP geladen werden.
Hier ein PHP Beispiel für den Verbindungsaufbau.
<?php $manager = new MongoDB\Driver\Manager("mongodb://localhost:27017"); $keyword = "dvd"; $filter = ['$text' => ['$search' => $keyword]]; $options = ['limit' => 3]; $query = new MongoDB\Driver\Query($filter, $options); $cursor = $manager->executeQuery('mydb.search', $query); $result = $cursor->toArray(); var_dump($manager); print_r($result); ?> |
Jetzt hat man den Treiber für PHP installiert. Für die Entwicklung ist der Treiber sehr Grundlegend. Mit einer Erweiterung ist die Entwicklung sehr viel einfacher.
6. Composer Installieren
Auf der Seite von Composer gibt es ein kurze Anleitung wie man den Downloader „composer-setup.php“ verwendet und installiert.
// Download installer php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" // Check HASH value from download php -r "if (hash_file('SHA384', 'composer-setup.php') === 'e115a8dc7871f15d853148a7fbac7da27d6c0030b848d9b3dc09e2a0388afed865e6a3d6b3c0fad45c48e2b5fc1196ae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" // Composer installation and download php composer-setup.php --install-dir=/path/ // Delete setup files php -r "unlink('composer-setup.php');" |
7. Composer Erweiterung installieren
Jetzt kann man mit dem Composer die MongoDB Erweiterung installieren.
php composer.phar require "mongodb/mongodb=^1.5.0"
8. Composer Erweiterung verwenden
<?php // This path should point to Composer's autoloader require 'vendor/autoload.php'; $client = new MongoDB\Client("mongodb://localhost:27017"); $collection = $client->db->collection; $result = $collection->find(['name' => 'DVD']); foreach ($result as $entry) { echo $entry['_id'], ': ', $entry['name'], "\n"; } ?> |
Schreibe einen Kommentar