Habilitación y uso de MongoDB en ServBay (Extensión PHP y servicio de base de datos)
ServBay es un potente entorno de desarrollo web local diseñado para desarrolladores. Integra múltiples servidores web, lenguajes de programación y bases de datos, e incluye de serie muchas extensiones y herramientas populares para distintos lenguajes. Para los desarrolladores PHP que necesitan trabajar con bases de datos MongoDB, ServBay ofrece una manera sencilla de habilitar la extensión MongoDB para PHP y ejecutar el servicio de base de datos MongoDB.
En esta guía se explica en detalle cómo habilitar la extensión MongoDB para PHP en ServBay, cómo iniciar el servicio de base de datos MongoDB, y se muestra cómo conectar y usar MongoDB en un proyecto PHP.
Descripción general: ServBay y MongoDB
MongoDB es una base de datos NoSQL orientada a documentos, de alto rendimiento y código abierto, ampliamente utilizada en aplicaciones web modernas debido a su modelo de datos flexible y excelente capacidad de escalabilidad.
ServBay incluye MongoDB como uno de sus paquetes integrados, lo que permite a los desarrolladores desplegar y administrar instancias de bases de datos MongoDB fácilmente en su entorno local. Además, ServBay compila y empaqueta las extensiones MongoDB adecuadas (como mongodb.so
) para las diferentes versiones de PHP, permitiendo que las aplicaciones PHP interactúen con MongoDB.
Para utilizar MongoDB en tu proyecto PHP, necesitas completar dos pasos principales:
- Habilitar la extensión MongoDB para PHP: Esto permite a tu código PHP ejecutar funciones específicas de MongoDB.
- Iniciar el servicio de base de datos MongoDB: Es la instancia de MongoDB en ejecución que almacena y administra tus datos.
La interfaz gráfica de usuario (GUI) de ServBay simplifica ambos procesos.
Versiones de la extensión PHP MongoDB
ServBay ofrece extensiones MongoDB compatibles para varias versiones de PHP soportadas. Las versiones específicas pueden variar según la actualización de ServBay, pero normalmente se incluyen las versiones estables compatibles con cada PHP. A continuación se resumen las combinaciones habituales de versiones en ServBay (consulta tu instalación para confirmación):
- 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
Ten en cuenta que la extensión PHP (mongodb.so
) simplemente habilita la comunicación entre PHP y MongoDB. Para interactuar realmente con la base de datos desde PHP, generalmente se utiliza el driver oficial de PHP para MongoDB, que se instala a través de Composer.
Cómo habilitar la extensión MongoDB para PHP
Por defecto, para mantener el entorno ligero, algunas extensiones PHP pueden venir deshabilitadas en ServBay. La manera recomendada de habilitar la extensión MongoDB es a través de la GUI de ServBay.
Habilitar mediante la GUI de ServBay
Este es el método más sencillo y rápido:
- Abre la aplicación ServBay.
- En la barra de navegación izquierda, haz clic en Lenguajes (Languages) y selecciona PHP.
- Elige la versión de PHP donde quieres habilitar MongoDB (por ejemplo,
PHP 8.4
). - En el panel derecho, localiza la sección Extensiones (Extensions).
- Desplázate hasta encontrar la extensión
MongoDB
. - Pulsa el interruptor a la izquierda de
MongoDB
para activar la extensión (de gris [desactivado] a verde [activado]). - Haz clic en el botón Guardar (Save) en la parte inferior del panel.
ServBay modificará automáticamente el archivo de configuración PHP correspondiente y reiniciará el servicio PHP afectado para aplicar los cambios.
Edición manual del archivo de configuración (opcional)
Si prefieres configurar manualmente o necesitas ajustes avanzados, puedes editar el archivo de configuración de PHP directamente. Sin embargo, en la mayoría de los casos basta con el método GUI.
Ve al directorio
conf.d
de la versión de PHP correspondiente. Por ejemplo, para PHP 8.3, la ruta suele ser:bash/Applications/ServBay/etc/php/8.3/conf.d/mongodb.ini
1Ajusta esta ruta según la ubicación de tu instalación de ServBay y versión de PHP.
Abre el archivo
mongodb.ini
con tu editor de texto favorito.Busca las siguientes líneas:
ini[MongoDB] ; Uncomment the following line to enable MongoDB ;extension = mongodb.so
1
2
3Elimina el punto y coma
;
al inicio de la líneaextension = mongodb.so
para descomentarla:ini[MongoDB] ; Uncomment the following line to enable MongoDB extension = mongodb.so
1
2
3Guarda el archivo.
Importante: Tras modificar el archivo de configuración, debes reiniciar manualmente el servicio PHP correspondiente para que los cambios surtan efecto. En la GUI de ServBay, ve a Paquetes (Packages), localiza la versión de PHP que has modificado y haz clic en el botón de reinicio (usualmente un icono de flecha circular) al lado.
Iniciar el servicio de base de datos MongoDB
Habilitar la extensión PHP te permite “hablar” con MongoDB desde tu código PHP, pero necesitas que exista una instancia de MongoDB ejecutándose para procesar y almacenar datos. ServBay también ofrece MongoDB como paquete, permitiendo su inicio fácil desde la GUI.
- Abre la aplicación ServBay.
- En la barra de navegación izquierda, haz clic en Paquetes (Packages).
- En la lista de paquetes, localiza la categoría Bases de datos (Databases).
- Busca el paquete
MongoDB
. - Activa el interruptor a la izquierda de
MongoDB
para poner el servicio en verde (en ejecución).
El servicio de MongoDB arrancará en el puerto predeterminado 27017
.
Verificar la extensión y la conexión con la base de datos
Tras completar los pasos anteriores, puedes comprobar que la extensión MongoDB está cargada correctamente y que el servicio está operativo.
Verificar si la extensión PHP está cargada
Crea un archivo PHP sencillo para revisar la salida de phpinfo()
:
- En el directorio raíz de tu sitio ServBay (ej.,
/Applications/ServBay/www
), crea un archivo PHP, por ejemplophpinfo.php
. - Añade el siguiente contenido:php
<?php phpinfo(); ?>
1
2
3 - Accede a este archivo desde tu navegador, por ejemplo,
https://servbay.demo/phpinfo.php
(suponiendo queservbay.demo
apunte al directoriowww
de ServBay). - Busca "MongoDB" en la página resultante. Si la extensión se ha cargado correctamente, deberías ver una sección “mongodb” con la información de versión y configuración.
(Nota: La imagen podría diferir ligeramente según tu versión de ServBay o interfaz)
Verificar la conexión con la base de datos
Crea un script PHP sencillo para intentar conectarte al servicio MongoDB local:
- Asegúrate de haber instalado el driver oficial de MongoDB para PHP usando Composer en tu proyecto. Si no lo has hecho, entra en el directorio de tu proyecto y ejecuta:bash
composer require mongodb/mongodb
1 - Crea un archivo PHP en tu proyecto, por ejemplo,
test_mongodb.php
. - Añade el siguiente código:php
<?php require __DIR__ . '/vendor/autoload.php'; // Ajusta la ruta según la estructura de tu proyecto echo "Attempting to connect to MongoDB...\n"; try { // Conectarse a la instancia local en puerto 27017 $client = new MongoDB\Client("mongodb://localhost:27017"); // Listar las bases de datos para verificar la conexión $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 - Ejecuta el script desde terminal (usando la versión de PHP correcta de ServBay) o desde la web. Si la conexión es exitosa, verás un mensaje y una lista de bases de datos. Si falla, el mensaje de error te ayudará a diagnosticar posibles problemas (por ejemplo, servicio MongoDB no iniciado).
Uso de MongoDB en código PHP
Una vez esté habilitada la extensión y el servicio de MongoDB, puedes usar el driver oficial instalado vía Composer para interactuar con la base de datos fácilmente desde PHP.
Instalación del driver oficial de MongoDB para PHP
Como se mencionó antes, lo recomendable es instalar el driver oficial vía Composer:
bash
composer require mongodb/mongodb
1
Esto instalará el paquete mongodb/mongodb
y sus dependencias, generando además el archivo vendor/autoload.php
.
Ejemplo de código
Aquí tienes un ejemplo simple que muestra cómo conectar con MongoDB, insertar y consultar documentos:
php
<?php
require __DIR__ . '/vendor/autoload.php'; // Asegúrate de incluir el autoloader de Composer
echo "Connecting to MongoDB...\n";
try {
// Conectarse a la instancia local de MongoDB
$client = new MongoDB\Client("mongodb://localhost:27017");
// Seleccionar base de datos y colección
// MongoDB creará la base de datos/colección al primer insert si no existen
$collection = $client->servbay_demo_db->users; // Base de datos de ejemplo: servbay_demo_db
echo "Connected. Performing operations...\n";
// Insertar documento
$insertResult = $collection->insertOne([
'name' => 'Alice ServBay', // Datos de ejemplo incluyen la marca
'email' => '[email protected]',
'age' => 30,
'createdAt' => new MongoDB\BSON\UTCDateTime(time() * 1000) // Tipo fecha BSON
]);
printf("Inserted document with ID: %s\n", $insertResult->getInsertedId());
// Buscar documento
$document = $collection->findOne(['name' => 'Alice ServBay']);
echo "Found document:\n";
if ($document) {
print_r($document);
} else {
echo "Document not found.\n";
}
// Actualizar documento (opcional)
$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());
// Consultar el documento actualizado (opcional)
$updatedDocument = $collection->findOne(['name' => 'Alice ServBay']);
echo "Updated document:\n";
if ($updatedDocument) {
print_r($updatedDocument);
}
// Eliminar documento (opcional)
// $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
Guarda el código como un archivo PHP, ejecútalo por terminal con el CLI de ServBay o accede a él vía web mediante el servidor integrado.
Consideraciones y mejores prácticas
- Estado del servicio MongoDB: Asegúrate de que el paquete MongoDB esté marcado como “en ejecución” en la GUI de ServBay antes de intentar conectar.
- Puerto por defecto: MongoDB usa por defecto el puerto
27017
. Si tu aplicación usa otro, indícalo en la cadena de conexión. Puedes consultar y modificar los puertos en la configuración del paquete en la GUI. - Extensión vs. driver: La extensión PHP (
mongodb.so
) provee la capacidad de comunicación de bajo nivel. El paquete Composermongodb/mongodb
ofrece una API orientada a objetos mucho más cómoda y moderna. La mayoría de desarrollos PHP usarán ambos. - CA de usuario de ServBay / CA pública: ServBay puede generar certificados SSL usando su CA interna, simulando así un entorno HTTPS como en producción para desarrollo local. Normalmente, la conexión local a MongoDB no usa SSL, pero en escenarios avanzados puedes habilitarlo. ServBay soporta también certificados reales vía ACME, backup de datos y reset de contraseñas de bases de datos, mostrando su robustez como entorno integral.
- Herramientas de administración de bases de datos: ServBay podría no incluir una herramienta gráfica para MongoDB, pero puedes descargar MongoDB Compass o usar los clientes de línea de comandos
mongo
/mongosh
para administrar la instancia local.
Preguntas frecuentes (FAQ)
P: Habilité la extensión MongoDB para PHP, pero mi script PHP no puede conectar a MongoDB. ¿Qué hago?
R: Asegúrate de que tienes iniciado el servicio de base de datos MongoDB desde la GUI de ServBay. La extensión PHP solo es el “puente”; la base de datos debe estar funcionando aparte. Comprueba también que la cadena de conexión es la correcta (normalmente mongodb://localhost:27017
).
P: ¿Qué diferencia hay entre la extensión mongodb.so
y el paquete Composer mongodb/mongodb
?
R: mongodb.so
es una extensión de bajo nivel cargada por el motor PHP, brindando comunicación con el driver C (libmongoc) de MongoDB. El paquete Composer mongodb/mongodb
provee una librería PHP orientada a objetos construida encima de dicha extensión, facilitando el trabajo con CRUD, agregados, etc. En ambientes PHP modernos normalmente necesitas habilitar la extensión y además instalar el paquete Composer.
P: ¿Cómo modifico el puerto o configuración de MongoDB?
R: Puedes consultar las opciones de configuración del paquete MongoDB desde la GUI de ServBay, incluyendo el puerto. Para opciones avanzadas, edita el archivo de configuración de MongoDB cuyo path puedes ver en los detalles del paquete en ServBay. Tras modificar, reinicia el servicio MongoDB.
Resumen
ServBay proporciona a los desarrolladores PHP un entorno de desarrollo con soporte MongoDB extremadamente fácil de usar. Gracias a su interfaz visual, puedes habilitar la extensión MongoDB para PHP y lanzar la base de datos MongoDB en cuestión de segundos. Con el driver oficial de PHP instalado por Composer, puedes construir aplicaciones PHP + MongoDB en local rápidamente y centrarte en tu código. La integración de ServBay reduce drásticamente la complejidad de la configuración, permitiéndote desarrollar y probar en local de manera eficiente y profesional.