MAMP: MongoDB-Unterstützung hinzufügen

Um mit einer MongoDB kommunizieren zu können, benötigen wir eine entsprechende Schnittstelle aus PHP heraus. Wie diese eingerichtet wird kann man hier nachlesen. Die Informationen dort sind allerdings sehr rudimentär – also möchte ich hier etwas mehr ins Detail gehen.

In meiner Testumgebung (MAMP) nutze ich PHP 5.4.4. Damit PECL genutzt werden kann, müssen allerdings noch einige Vorkehrungen getroffen werden:

Als erstes müssen die „MAMP Serverkomponenten und Bibliotheken / MAMP Server components and libraries“ geladen werden (ca. 150MB). Diese werden im Downloadbereich bereitgestellt. Aus dem geladenen Paket braucht man allerdings nur die Qullen von PHP in der entsprechenden Version.

Alternativ kann man die nötigen Quellen auch von der offiziellen PHP-Seite herunterladen. Die geladenen Qullen müssen in in ein Include-Verzeichnis unter PHP entpackt werden:

Nun sollte die Verzeichnisstruktur so aussehen (man achte auf include/php):

Danach wechseln wir in das entsprechende Verzeichnis und rufen configureauf.

Nun können wir PECL nutzen und die MongoDB-Erweiterung hinzufügen:

Falls man folgende Meldung bekommt, muss man autoconf installieren.

Ich habe gehört, dass Xcode die Autotools eigentlich mitbringt – sollte es dennoch (wie bei mir) zu einem Fehler kommen, muss autoconf nachinstalliert werden. Das geht am einfachsten per brew:

Danach muss man die oben genannten Befehle erneut ausführen und sollte nach ein bis zwei Minuten folgende Meldung erhalten:

Geschafft! Also prüfen wir, ob die Extrension erfolgreich kompiliert wurde indem wir in das Zielverzeichnis schauen. Dieses befindet sich in meinem Fall hier (Datum im Pfad kann abweichen):

Alles was wir nun noch tun müssen, ist die Erweiterung in die php.ini aufzunehmen (wie uns bereits in der letzten Meldung schon vorgeschlagen wurde). Dafür öffnen wir die entsprechende php.ini (welche Konfiguration genutzt wird, kann ganz einfach per phpinfo() überprüft werden). Im gleichen Zuge können wir prüfen, ob das Verzeichnis für die Erweiterungen richtig konfiguriert ist (und ob dort auch unsere neue mongo.so-Erweiterung liegt).

Nun fügen wir folgende Zeile ein (im Idealfall an das Ende der Extension-Liste – generell ist die Position aber egal):

Nun muss der Apache einmal neu gestartet werden um die Änderung wirksam zu machen. Um mit der neuen noSQL-Datenbank etwas vertraut zu werden, bietet sich ein Tutorial auf php.net an. Dazu öffnet man das Terminal und führt den Befehl mongod aus (man achte auf das D am Ende – ohne D startet man den Client!).

Der folgende PHP-Code hat bei mir ohne Probleme funktioniert (aus dem genannten Tutorial entnommen):

Über

Jahrgang 87, gelernter Softwareentwickler und fast ein Jahrzehnt Erfahrung im Bereich Web-Entwicklung mit PHP und Web-Design. Diese Eigenschaften machen mich zu einem geeigneten und geschätzten Ansprechpartner für die Umsetzung Ihres Projektes. Weiterhin bin ich seit Ende 2013 Magento Certified Developer.