MongoDB inschakelen en gebruiken in ServBay (PHP-extensie en databaseservice)
ServBay is een krachtig lokaal webontwikkelplatform dat speciaal is ontworpen voor ontwikkelaars. Het integreert meerdere webservers, programmeertalen en databases, en bevat tal van populaire taalextensies en tools vooraf geïnstalleerd. Voor PHP-ontwikkelaars die MongoDB willen gebruiken, biedt ServBay een eenvoudige manier om de MongoDB-extensie voor PHP te activeren én de MongoDB-databaseserver te draaien.
In dit artikel vind je een gedetailleerde handleiding voor het inschakelen van de MongoDB-extensie voor PHP, het starten van de MongoDB-databaseservice in ServBay, en zie je hoe je vanaf je PHP-project verbinding maakt met MongoDB.
Overzicht: ServBay & MongoDB
MongoDB is een krachtige, open-source, documentgerichte NoSQL-database die dankzij zijn flexibele datamodel en uitstekende schaalbaarheid veel wordt gebruikt in moderne webapplicaties.
ServBay levert MongoDB als één van de ingebouwde softwarepakketten, waardoor ontwikkelaars eenvoudig een lokale MongoDB-instance kunnen beheren en draaien. Daarnaast voorziet ServBay in kant-en-klare, compatibele MongoDB-extensies (mongodb.so
) voor verschillende PHP-versies, zodat PHP-applicaties probleemloos kunnen communiceren met MongoDB.
Om MongoDB in je PHP-project te gebruiken, moet je twee belangrijke stappen doorlopen:
- MongoDB-extensie voor PHP inschakelen: Hiermee kan je PHP-code MongoDB-functies aanroepen.
- MongoDB-databaseservice starten: Hiermee draai je een werkende MongoDB-database voor opslag en beheer van data.
ServBay's grafische gebruikersinterface (GUI) maakt beide stappen eenvoudig toegankelijk.
Versies van de PHP MongoDB-extensie
ServBay levert bij verschillende ondersteunde PHP-versies de juiste, geprecompileerde MongoDB-extensie. De exacte versie kan veranderen met updates, maar steeds wordt een compatibele, stabiele variant meegeleverd. Een overzicht van gangbare combinaties in ServBay (controleer je eigen ServBay-versie voor de geldende stand):
- PHP 5.6, 7.0: MongoDB 1.7.5
- PHP 7.1, 7.2, 7.3, 7.4: MongoDB 1.11.1
- PHP 8.0, 8.1, 8.2, 8.3: MongoDB 1.15.0
- PHP 8.4: MongoDB 1.19.1
Let op: de PHP-extensie (mongodb.so
) maakt enkel communicatie mogelijk tussen PHP en MongoDB. Om werkelijk met de database te werken, heb je de officiële MongoDB PHP Driver nodig, doorgaans geïnstalleerd met Composer.
PHP MongoDB-extensie inschakelen
Standaard zijn sommige extensies in ServBay uitgeschakeld voor een slanke omgeving. De aanbevolen manier om de MongoDB-extensie te activeren is via de ServBay GUI.
Inschakelen via de ServBay GUI
Dit is de snelste en simpelste methode:
- Open de ServBay-app.
- Klik in de linker navigatiebalk op Talen (Languages) en selecteer PHP.
- Kies de PHP-versie waarvoor je MongoDB wilt inschakelen (bijv.
PHP 8.4
). - Zoek in het rechterpaneel het onderdeel Extensies (Extensions).
- Scroll naar beneden tot je de
MongoDB
-extensie ziet. - Zet de schakelaar links van
MongoDB
aan: van grijs (uit) naar groen (aan). - Klik op Opslaan (Save) onderaan het paneel.
ServBay past automatisch de betreffende PHP-configuratie aan en herstart de benodigde PHP-services.
Handmatig configuratiebestand bewerken (optioneel)
Wil je liever handmatig configureren of geavanceerdere wijzigingen aanbrengen, pas dan het PHP-configuratiebestand direct aan. Meestal is de GUI voldoende.
Navigeer naar het
conf.d
-directory van de gewenste PHP-versie. Wil je bijvoorbeeld voor PHP 8.3 de extensie activeren, dan is het pad meestal:bash/Applications/ServBay/etc/php/8.3/conf.d/mongodb.ini
1Pas dit pad aan op basis van jouw ServBay-installatie en de relevante PHP-versie.
Open het bestand
mongodb.ini
met een teksteditor.Zoek de volgende regels:
ini[MongoDB] ; Uncomment the following line to enable MongoDB ;extension = mongodb.so
1
2
3Haal de puntkomma
;
weg voorextension = mongodb.so
om deze regel te activeren:ini[MongoDB] ; Uncomment the following line to enable MongoDB extension = mongodb.so
1
2
3Sla het bestand op.
Belangrijk: Na handmatig wijzigen moet je de betreffende PHP-service handmatig herstarten. Klik in de ServBay GUI links op Pakketten (Packages), zoek de gewijzigde PHP-versie op, en klik op de herstartknop (meestal een rond pijltje) rechts.
De MongoDB-databaseservice starten
De PHP-extensie zorgt alleen voor communicatie, maar je hebt wel degelijk een draaiende MongoDB-instantie nodig voor opslag en bewerking van gegevens. ServBay biedt MongoDB als softwarepakket aan dat je eenvoudig via de GUI start.
- Open de ServBay-app.
- Klik in de linker navigatiebalk op Pakketten (Packages).
- Zoek in de lijst het onderdeel Databases.
- Zoek het
MongoDB
-pakket op. - Zet de schakelaar links van het
MongoDB
-pakket van grijs (gestopt) op groen (actief).
De databaseservice van MongoDB draait nu op standaardpoort 27017
.
MongoDB-module en databaseconnectie verifiëren
Na bovenstaande stappen kun je zo controleren of de PHP MongoDB-extensie correct geladen is en of de databaseservice actief is.
Controleren of de PHP-extensie geladen is
Maak een eenvoudig PHP-bestand aan om de uitvoer van phpinfo()
te bekijken:
- Plaats in de root van je ServBay-site (bijv.
/Applications/ServBay/www
) een nieuw PHP-bestand, bijvoorbeeldphpinfo.php
. - Voeg de volgende inhoud toe:php
<?php phpinfo(); ?>
1
2
3 - Open dit bestand in je browser, bijvoorbeeld
https://servbay.demo/phpinfo.php
(ervan uitgaande datservbay.demo
verwijst naar jewww
-map). - Zoek op de
phpinfo
-pagina naar "MongoDB". Zie je een sectie "mongodb", dan is de extensie correct geladen en zie je de versie- en configuratiegegevens.
(Let op: jouw scherm kan iets afwijken van dit voorbeeld afhankelijk van de ServBay-versie of interface)
Databaseconnectie controleren
Maak een eenvoudige PHP-script om de verbinding met je lokale MongoDB-database te testen:
- Zorg dat je via Composer de officiële MongoDB PHP-driver hebt geïnstalleerd. Zo nodig, ga naar je projectmap en voer uit:bash
composer require mongodb/mongodb
1 - Maak een PHP-bestand, bijvoorbeeld
test_mongodb.php
. - Voeg de volgende code in:php
<?php require __DIR__ . '/vendor/autoload.php'; // Pas pad eventueel aan echo "Attempting to connect to MongoDB...\n"; try { // Verbinden met lokale MongoDB-instantie op standaardpoort 27017 $client = new MongoDB\Client("mongodb://localhost:27017"); // Probeer databases weer te geven om connectie te valideren $listDatabases = $client->listDatabases(); echo "Successfully connected to MongoDB!\n"; echo "Available databases:\n"; foreach ($listDatabases as $databaseInfo) { echo "- " . $databaseInfo->getName() . "\n"; } } catch (\MongoDB\Driver\Exception\Exception $e) { echo "Failed to connect to MongoDB: " . $e->getMessage() . "\n"; } ?>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 - Voer dit script uit in de terminal (met de juiste PHP-versie van ServBay) of open het bestand in je browser. Bij een geslaagde connectie krijg je een bevestiging en een lijst met databases; als het mislukt verschijnt er een foutbericht (bijv. als MongoDB niet draait).
MongoDB gebruiken in je PHP-code
Met de MongoDB-extensie voor PHP actief en de databaseservice draaiend, kun je de via Composer geïnstalleerde MongoDB PHP-driver gebruiken voor alle databasebewerkingen.
De MongoDB PHP-driver installeren
Zoals hierboven beschreven: installeer de officiële driver eenvoudig met Composer:
bash
composer require mongodb/mongodb
1
Dit plaatst het pakket mongodb/mongodb
plus afhankelijkheden in je project, en maakt het bestand vendor/autoload.php
aan.
Voorbeeldcode
Hieronder zie je een praktisch voorbeeld: verbinding maken, een document invoegen en opvragen:
php
<?php
require __DIR__ . '/vendor/autoload.php'; // Zorg voor correcte Composer autoload
echo "Connecting to MongoDB...\n";
try {
// Verbinden met lokale MongoDB-instantie
$client = new MongoDB\Client("mongodb://localhost:27017");
// Database en collectie selecteren
// MongoDB creëert deze automatisch indien nog niet bestaand bij eerste schrijfactie
$collection = $client->servbay_demo_db->users; // Voorbeeld: database servbay_demo_db
echo "Connected. Performing operations...\n";
// Document invoegen
$insertResult = $collection->insertOne([
'name' => 'Alice ServBay', // Voorbeeld met merknaam
'email' => '[email protected]',
'age' => 30,
'createdAt' => new MongoDB\BSON\UTCDateTime(time() * 1000) // BSON datumtype
]);
printf("Inserted document with ID: %s\n", $insertResult->getInsertedId());
// Document opvragen
$document = $collection->findOne(['name' => 'Alice ServBay']);
echo "Found document:\n";
if ($document) {
print_r($document);
} else {
echo "Document not found.\n";
}
// Document bijwerken (optioneel)
$updateResult = $collection->updateOne(
['name' => 'Alice ServBay'],
['$set' => ['age' => 31, 'status' => 'updated']]
);
printf("Matched %d document(s) for update, modified %d document(s).\n", $updateResult->getMatchedCount(), $updateResult->getModifiedCount());
// Geüpdatet document opvragen (optioneel)
$updatedDocument = $collection->findOne(['name' => 'Alice ServBay']);
echo "Updated document:\n";
if ($updatedDocument) {
print_r($updatedDocument);
}
// Document verwijderen (optioneel)
// $deleteResult = $collection->deleteOne(['name' => 'Alice ServBay']);
// printf("Deleted %d document(s).\n", $deleteResult->getDeletedCount());
} catch (\MongoDB\Driver\Exception\Exception $e) {
echo "An error occurred: " . $e->getMessage() . "\n";
} catch (\Exception $e) {
echo "An unexpected error occurred: " . $e->getMessage() . "\n";
}
echo "Script finished.\n";
?>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
Sla deze code op in een PHP-bestand dat je via de command line (met ServBay's PHP-cli) of via de webserver van ServBay kunt uitvoeren.
Belangrijke aandachtspunten & best practices
- Status van MongoDB-service: Controleer altijd of het MongoDB-pakket in de ServBay GUI op "actief" (groen) staat voordat je probeert verbinding te maken.
- Standaardpoort: MongoDB gebruikt standaard poort
27017
. Indien je een andere poort nodig hebt, geef dat dan op in de connectiestring. Het poortnummer kun je doorgaans ook in de GUI inzien of aanpassen. - Extensie vs. driver: De PHP-extensie
mongodb.so
verzorgt de fundamentele communicatie, terwijl het Composer-pakketmongodb/mongodb
een objectgeoriënteerde API biedt voor databasebewerkingen. Moderne PHP-applicaties gebruiken meestal beiden samen. - ServBay User CA/Public CA: ServBay ondersteunt uitgegeven SSL-certificaten via de ingebouwde CA, handig voor het simuleren van een productie-HTTPS-omgeving bij lokale ontwikkeling. Voor lokale MongoDB-verbindingen is SSL meestal niet vereist, maar voor complexe configuraties kan dit interessant zijn. ServBay biedt ook ACME-ondersteuning voor officiële certificaten, plus functionaliteiten zoals data-back-ups en wachtwoordresets voor databases—aandachtspunten die bijdragen aan de kracht van ServBay als compleet ontwikkelplatform.
- Databasebeheer: ServBay zelf levert mogelijk geen grafische MongoDB-beheertools, maar je kunt de officiële MongoDB Compass downloaden of CLI-tools als
mongo
/mongosh
gebruiken voor het beheer van je lokale database.
Veelgestelde vragen (FAQ)
Vraag: Ik heb de PHP MongoDB-extensie ingeschakeld, maar mijn PHP-script maakt geen verbinding. Wat nu?
Antwoord: Controleer of je écht de MongoDB databaseservice hebt gestart via de ServBay GUI. De PHP-extensie is slechts de interface, de service is de eigenlijke draaiende database. Kijk ook of je connectiestring correct is (mongodb://localhost:27017
is gebruikelijk).
Vraag: Wat is het verschil tussen de extensie mongodb.so
en het Composer-pakket mongodb/mongodb
?
Antwoord: mongodb.so
is een native PHP-extensie voor communicatie met MongoDB C-driver (libmongoc). Het Composer-pakket mongodb/mongodb
is een PHP-bibliotheek gebaseerd op deze extensie, en biedt een gebruiksvriendelijke, objectgeoriënteerde API voor databaseacties. Meestal heb je beide nodig in moderne PHP-projecten.
Vraag: Hoe wijzig ik de poort of settings van MongoDB?
Antwoord: Je kunt de configuratieopties (zoals poortnummer) bekijken of aanpassen via de ServBay GUI in het MongoDB-softwarepakket. Voor meer geavanceerde instellingen bewerk je het MongoDB-configuratiebestand, waarvan je het pad in de pakketdetails vindt. Na aanpassingen moet je de MongoDB-service herstarten.
Samenvatting
ServBay biedt PHP-ontwikkelaars een uitzonderlijk handige omgeving voor MongoDB-ontwikkeling. Dankzij de duidelijke GUI kun je moeiteloos de MongoDB-extensie inschakelen en de databaseservice opstarten. In combinatie met de officiële PHP-driver (via Composer) heb je razendsnel een werkende lokale PHP + MongoDB set-up waarmee je direct aan de slag kan met je app. Dankzij de krachtige integratie van ServBay wordt tijdrovende environment-configuratie geminimaliseerd en kun je efficiënt aan je projecten bouwen en testen.