Abilitare e Utilizzare MongoDB in ServBay (Estensione PHP e Servizio Database)
ServBay è un potente ambiente di sviluppo web locale progettato per sviluppatori, che integra non solo diversi server web, linguaggi di programmazione e database, ma include anche numerose estensioni e strumenti utili. Per gli sviluppatori PHP che necessitano di utilizzare MongoDB, ServBay fornisce un modo semplice per attivare l'estensione MongoDB di PHP ed eseguire il servizio database MongoDB.
In questa guida vedremo come abilitare l'estensione MongoDB per PHP su ServBay, come avviare il servizio database MongoDB e come connettersi e utilizzare MongoDB all'interno di un progetto PHP.
Panoramica: ServBay e MongoDB
MongoDB è un database NoSQL open source ad alte prestazioni, orientato ai documenti, ampiamente utilizzato nelle moderne applicazioni web grazie al suo modello dati flessibile e alla sua notevole scalabilità.
ServBay include MongoDB tra i suoi pacchetti integrati, consentendo agli sviluppatori di implementare e gestire facilmente istanze MongoDB nel proprio ambiente locale. In più, ServBay offre le versioni precompilate e impacchettate dell'estensione MongoDB ( mongodb.so
) compatibili con le diverse versioni di PHP, permettendo alle applicazioni PHP di interagire col database MongoDB.
Per utilizzare MongoDB in un progetto PHP occorrono principalmente due passi:
- Abilitare l’estensione MongoDB di PHP: permette al codice PHP di richiamare le funzioni legate a MongoDB.
- Avviare il servizio database MongoDB: ossia far partire un'istanza operativa di MongoDB per gestire e archiviare i dati.
L’interfaccia grafica di ServBay (GUI) semplifica entrambe queste operazioni.
Versioni dell’Estensione PHP MongoDB
ServBay offre l’estensione MongoDB appropriata per ciascuna versione di PHP supportata. Le versioni esatte delle estensioni possono variare a seconda degli aggiornamenti di ServBay, ma vengono normalmente distribuite versioni stabili compatibili con ciascun PHP. Di seguito una panoramica delle accoppiate più comuni (verificare la versione effettiva installata su ServBay):
- 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
Nota: l’estensione PHP (mongodb.so
) fornisce solamente la capacità di comunicare fra PHP e MongoDB. Per interagire effettivamente con il database all’interno del codice, è necessario installare il driver ufficiale per PHP di MongoDB usando normalmente Composer.
Abilitare l’Estensione PHP MongoDB
Per mantenere l’ambiente leggero, alcune estensioni PHP su ServBay potrebbero non essere attivate di default. Si consiglia di abilitare l’estensione MongoDB tramite l'interfaccia GUI di ServBay.
Abilitazione Tramite GUI di ServBay
Ecco la procedura più semplice e veloce:
- Avvia l’applicazione ServBay.
- Nella barra di navigazione a sinistra, clicca su Lingue (Languages) e poi su PHP.
- Scegli la versione di PHP in cui vuoi abilitare l’estensione MongoDB (ad esempio,
PHP 8.4
). - Nel pannello a destra, individua la sezione Estensioni (Extensions).
- Scorri fino a trovare l’estensione
MongoDB
. - Attiva l’interruttore alla sinistra di
MongoDB
, cambiandolo da grigio (disabilitato) a verde (abilitato). - Premi il pulsante Salva (Save) in fondo al pannello.
ServBay aggiornerà automaticamente il file di configurazione PHP pertinente e riavvierà i servizi PHP coinvolti per rendere effettivi i cambiamenti.
Modifica Manuale del File di Configurazione (Opzionale)
Se preferisci una configurazione manuale, o necessiti opzioni avanzate, puoi modificare direttamente i file di configurazione di PHP. Tuttavia, per la maggior parte degli utenti, la procedura GUI è più che sufficiente.
Accedi alla cartella
conf.d
relativa alla versione di PHP desiderata. Ad esempio, per abilitare l'estensione su PHP 8.3, il percorso sarà tipicamente:bash/Applications/ServBay/etc/php/8.3/conf.d/mongodb.ini
1Adatta il percorso in base alla versione di PHP e all’installazione di ServBay.
Apri il file
mongodb.ini
con un editor di testo.Individua la seguente sezione:
ini[MongoDB] ; Uncomment the following line to enable MongoDB ;extension = mongodb.so
1
2
3Rimuovi il punto e virgola
;
dalla rigaextension = mongodb.so
per attivare l’estensione:ini[MongoDB] ; Uncomment the following line to enable MongoDB extension = mongodb.so
1
2
3Salva il file.
Importante: Dopo aver modificato manualmente la configurazione, riavvia il servizio PHP corrispondente affinché la modifica abbia effetto. Puoi farlo dalla GUI di ServBay cliccando la voce Pacchetti (Packages) nella barra laterale, cercando la versione PHP modificata e usando il pulsante di riavvio (icona con una freccia circolare).
Avvio del Servizio Database MongoDB
Abilitare l’estensione PHP permette al codice PHP di “parlare” con MongoDB, ma serve anche un’istanza attiva del database. ServBay fornisce MongoDB come pacchetto integrato, avviabile dalla GUI con semplicità.
- Avvia l’applicazione ServBay.
- Nella barra laterale, seleziona Pacchetti (Packages).
- Nell’elenco dei pacchetti, cerca la categoria Database (Databases).
- Individua il pacchetto
MongoDB
. - Attiva l’interruttore alla sinistra per cambiare lo stato da grigio (fermo) a verde (in esecuzione).
Il servizio database MongoDB verrà avviato sulla porta di default 27017
.
Verifica dell’Estensione MongoDB e Connessione al Database
Dopo i passaggi precedenti, puoi controllare se l’estensione MongoDB per PHP è caricata e se il servizio database MongoDB è operativo.
Verifica del Caricamento dell’Estensione PHP
Crea un semplice file PHP per esaminare l’output di phpinfo()
:
- Nella root del tuo sito ServBay (ad esempio
/Applications/ServBay/www
), crea un nuovo file PHP, tipophpinfo.php
. - Inserisci questo contenuto:php
<?php phpinfo(); ?>
1
2
3 - Accedi al file dal browser, ad esempio con l’URL
https://servbay.demo/phpinfo.php
(supponendo cheservbay.demo
punti alla cartellawww
). - Nella pagina
phpinfo
, cerca "MongoDB". Se tutto funziona, vedrai una sezione chiamata "mongodb" con dettagli su versione e configurazione dell’estensione.
(Nota: lo screenshot può differire leggermente rispetto alla tua versione o interfaccia di ServBay)
Verifica della Connessione al Database
Crea un semplice script PHP per tentare la connessione a MongoDB in locale:
- Assicurati di aver installato tramite Composer il driver ufficiale di MongoDB per PHP. Se ancora non l’hai fatto, entra nella cartella del tuo progetto e lancia:bash
composer require mongodb/mongodb
1 - Crea un file PHP, ad esempio
test_mongodb.php
. - Inserisci il seguente codice:php
<?php require __DIR__ . '/vendor/autoload.php'; // Modifica il percorso in base alla struttura del tuo progetto echo "Tentativo di connessione a MongoDB...\n"; try { // Connessione all’istanza locale di MongoDB, porta predefinita 27017 $client = new MongoDB\Client("mongodb://localhost:27017"); // Tenta di elencare i database per verificare la connessione $listDatabases = $client->listDatabases(); echo "Connessione a MongoDB riuscita!\n"; echo "Database disponibili:\n"; foreach ($listDatabases as $databaseInfo) { echo "- " . $databaseInfo->getName() . "\n"; } } catch (\MongoDB\Driver\Exception\Exception $e) { echo "Connessione a MongoDB fallita: " . $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 - Lancia lo script da terminale (con la versione PHP di ServBay adatta) o visitando il file dal browser. Se la connessione va a buon fine, vedrai un messaggio di successo e un elenco dei database. In caso di problemi, l’errore ti aiuterà a diagnosticare la causa (ad es. MongoDB non avviato).
Utilizzare MongoDB nel Codice PHP
Attivata l’estensione PHP MongoDB e avviato il servizio database, puoi usare nel tuo progetto il driver PHP installato via Composer per eseguire tutte le operazioni.
Installazione del Driver PHP per MongoDB
Come visto sopra, il modo raccomandato è l’installazione via Composer:
composer require mongodb/mongodb
Questo installerà il pacchetto mongodb/mongodb
e le sue dipendenze, generando anche vendor/autoload.php
.
Esempio di Codice
Segue un esempio di base che mostra come connettersi a MongoDB, inserire un documento e fare una query:
<?php
require __DIR__ . '/vendor/autoload.php'; // Assicurati di richiamare l’autoloader Composer
echo "Connessione a MongoDB in corso...\n";
try {
// Connessione all'istanza locale di MongoDB
$client = new MongoDB\Client("mongodb://localhost:27017");
// Seleziona database e collection
// Se non esistono, MongoDB li crea al primo inserimento
$collection = $client->servbay_demo_db->users; // Usa servbay_demo_db come nome database di esempio
echo "Connesso. Eseguo operazioni...\n";
// Inserimento di un documento
$insertResult = $collection->insertOne([
'name' => 'Alice ServBay', // Il dato di esempio include il nome del brand
'email' => '[email protected]',
'age' => 30,
'createdAt' => new MongoDB\BSON\UTCDateTime(time() * 1000) // Usa tipo data BSON
]);
printf("Documento inserito con ID: %s\n", $insertResult->getInsertedId());
// Query di un documento
$document = $collection->findOne(['name' => 'Alice ServBay']);
echo "Documento trovato:\n";
if ($document) {
print_r($document);
} else {
echo "Documento non trovato.\n";
}
// Aggiornamento di un documento (opzionale)
$updateResult = $collection->updateOne(
['name' => 'Alice ServBay'],
['$set' => ['age' => 31, 'status' => 'updated']]
);
printf("Trovati %d documenti per l’aggiornamento, modificati %d documenti.\n", $updateResult->getMatchedCount(), $updateResult->getModifiedCount());
// Query del documento aggiornato (opzionale)
$updatedDocument = $collection->findOne(['name' => 'Alice ServBay']);
echo "Documento aggiornato:\n";
if ($updatedDocument) {
print_r($updatedDocument);
}
// Eliminazione di un documento (opzionale)
// $deleteResult = $collection->deleteOne(['name' => 'Alice ServBay']);
// printf("Eliminati %d documenti.\n", $deleteResult->getDeletedCount());
} catch (\MongoDB\Driver\Exception\Exception $e) {
echo "Si è verificato un errore: " . $e->getMessage() . "\n";
} catch (\Exception $e) {
echo "Errore imprevisto: " . $e->getMessage() . "\n";
}
echo "Script terminato.\n";
?>
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
Salva questo codice in un file PHP e lanciarlo da terminale con la CLI di PHP inclusa in ServBay, oppure tramite il server web ServBay.
Note e Best Practice
- Stato del servizio MongoDB: assicurati che il pacchetto MongoDB in ServBay sia impostato su "in esecuzione" prima di tentare una connessione.
- Porta di default: MongoDB usa la porta
27017
per impostazione predefinita. Se l’applicazione richiede una porta diversa, modificare la stringa di connessione di conseguenza. Puoi visualizzare o cambiare la porta dalla GUI di ServBay. - Estensione vs. driver: l’estensione
mongodb.so
fornisce la comunicazione di basso livello, mentre il pacchetto Composermongodb/mongodb
offre API ad alto livello orientate agli oggetti. Quasi tutte le applicazioni PHP moderne usano il Composer package. - CA utente ServBay/CA pubblica: ServBay supporta l’emissione di certificati SSL tramite la propria CA. Utile per simulare ambienti HTTPS di produzione anche in locale. Di norma la connessione con MongoDB in locale non richiede SSL, ma in configurazioni avanzate potrebbe servire. ServBay supporta anche richiesta certificati ACME reali, backup dati e reset delle password del database.
- Strumenti di amministrazione database: ServBay potrebbe non includere interfacce grafiche per MongoDB, ma puoi scaricare MongoDB Compass o usare i client a riga di comando
mongo
/mongosh
per gestire l’istanza MongoDB locale fornita da ServBay.
Domande Frequenti (FAQ)
D: Ho abilitato l’estensione MongoDB per PHP ma gli script non si connettono a MongoDB, che fare?
R: Assicurati di aver avviato il servizio database di MongoDB tramite la GUI di ServBay. L’estensione PHP è solo l’interfaccia: è il servizio database che gestisce i dati. Verifica anche che la stringa di connessione sia corretta (mongodb://localhost:27017
).
D: Qual è la differenza tra l’estensione mongodb.so
e il pacchetto Composer mongodb/mongodb
?
R: mongodb.so
è l’estensione "core" caricata dal motore PHP che abilita la comunicazione con il driver C di MongoDB (libmongoc); mongodb/mongodb
è una libreria PHP realizzata sopra questa estensione che fornisce API ad oggetti per operazioni CRUD, aggregazioni, ecc. Nello sviluppo PHP moderno occorre solitamente usare entrambi.
D: Come posso cambiare porta o impostazioni di MongoDB?
R: Puoi controllare le opzioni del pacchetto MongoDB tramite la GUI di ServBay (comprese le porte). Per impostazioni avanzate occorre modificare il file di configurazione di MongoDB: il percorso viene indicato nei dettagli del pacchetto in ServBay. Dopo ogni modifica, riavvia il servizio MongoDB.
Conclusione
ServBay offre agli sviluppatori PHP un ambiente MongoDB estremamente comodo e veloce. Tramite l’intuitiva interfaccia grafica puoi abilitare l’estensione MongoDB ed avviare il database in pochi click. Con il driver PHP ufficiale installato via Composer potrai costruire rapidamente un ambiente locale PHP + MongoDB, concentrandoti solo sulla logica applicativa. L’approccio integrato di ServBay elimina la complessità delle configurazioni e incrementa l’efficienza nel tuo sviluppo e testing locale.