PHP7 Erweiterung und Treiber für MongoDB installieren

Für den Zugriff von PHP7 auf eine MongoDB 3.2.10 Datenbank braucht man einen Client Treiber. Die Installation unter Ubuntu Server 16.04 LTE möchte ich hier beschreiben.

1. Pakete installieren

sudo apt install php-pear php7.0-dev

2. Treiber MongoDB installieren

sudo pecl install mongodb

Quelle:Github

Handbuch

3. Konfigurationsdatei erstellen

sudo sh -c 'echo "extension=mongodb.so" > /etc/php/7.0/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');"

Download

7. Composer Erweiterung installieren

Jetzt kann man mit dem Composer die MongoDB Erweiterung installieren.

php composer.phar require "mongodb/mongodb=^1.1.0"

Quelle, Releases

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";
}
 
?>

Dokumentation