Docs Menu
Docs Home
/ /

Solución de problemas de conexión

Esta página ofrece posibles soluciones a los problemas que puede encontrar al utilizar la biblioteca PHP para conectarse a una implementación de MongoDB.

Nota

Esta página solo aborda problemas de conexión. Si encuentra otros problemas al usar MongoDB o la biblioteca PHP, visite los siguientes recursos:

  • El Página de problemasy ayuda para obtener información sobre cómo informar errores, contribuir a la biblioteca y encontrar más recursos

  • El MongoDB Etiqueta de desbordamiento de pilao la comunidad MongoDB Reddit para encontrar ayuda para preguntas generales

Cuando ocurre un problema al intentar conectarse a un servidor, la biblioteca PHP devuelve un mensaje de error. Si este error se parece al siguiente, indica que la biblioteca no puede conectarse a una implementación de MongoDB:

No suitable servers found (`serverSelectionTryOnce` set):
[connection refused calling hello on 'localhost:27017']

Las siguientes secciones describen métodos que podrían ayudar a resolver el problema.

Verifique que el nombre de host y el número de puerto en la URI de conexión sean correctos. En el mensaje de error de ejemplo, el nombre de host es 127.0.0.1 El puerto es 27017. El valor de puerto predeterminado para una implementación de MongoDB Server es 27017, pero puede configurar MongoDB para que escuche en otro puerto.

Al conectarse a un conjunto de réplicas, incluya todos los hosts del conjunto de réplicas en la URI de conexión. Separe cada host en la cadena de conexión con una coma. Esto permite que la biblioteca establezca una conexión si uno de los hosts no está disponible.

Para aprender a especificar varios hosts de conjuntos de réplicas, consulte la sección Conjuntos de réplicas de la guía Elegir un destino de conexión.

Si su implementación de MongoDB está alojada tras un firewall, asegúrese de que el puerto de escucha de MongoDB esté abierto en el firewall. Si su implementación escucha en el puerto de red predeterminado, asegúrese de que el puerto 27017 esté abierto en el firewall. Si su implementación escucha en un puerto diferente, asegúrese de que ese puerto esté abierto en el firewall.

Advertencia

No abra un puerto de firewall a menos que esté seguro de que es el que escucha su implementación de MongoDB.

Es posible que la biblioteca PHP no pueda conectarse a una implementación de MongoDB si la autorización no está configurada correctamente. En estos casos, la biblioteca genera un mensaje de error similar al siguiente:

Authentication failed.

Las siguientes secciones describen métodos que pueden ayudar a resolver el problema.

Una de las causas más comunes de problemas de autenticación es el formato de credenciales no válido en la URI de conexión de MongoDB.

Tip

Para obtener más información sobre el uso de URI de conexión, consulte URI de conexión en la guía Crear un cliente MongoDB.

Si la URI de su conexión contiene un nombre de usuario y una contraseña, asegúrese de que tengan el formato correcto.

Nota

Debes codificar con porcentaje los siguientes caracteres si aparecen en tu nombre de usuario o contraseña:

: / ? # [ ] @

Utilice su nombre de usuario y contraseña codificados por porcentaje en su URI de conexión.

Asegúrate de que tus credenciales y mecanismo de autenticación sean correctos. Puedes especificar las credenciales de autenticación en las opciones de tu URI de conexión.

Si utiliza el parámetro $uriOptions para especificar un mecanismo de autenticación, asegúrese de configurar la opción 'authMechanism' con el mecanismo correcto. El siguiente código muestra cómo especificar el mecanismo de autenticación SCRAM-SHA-1 en un parámetro de opciones:

$uriOptions = [
'username' => '<username>',
'password' => '<password>',
'authSource' => '<authentication database>',
'authMechanism' => 'SCRAM-SHA-1',
];
$client = new MongoDB\Client(
'mongodb://<hostname>:<port>',
$uriOptions,
);

Para obtener más información sobre cómo especificar mecanismos de autenticación, consulte la sección Mecanismos de autenticación.

Cuando se utiliza un método de autenticación basado en nombre de usuario y contraseña, el nombre de usuario debe estar definido en la base de datos de autenticación.

La base de datos de autenticación predeterminada es admin. Para usar una base de datos diferente para la autenticación, especifique la opción authSource en la URI de conexión.

El siguiente ejemplo indica a MongoDB que utilice la base de datos users como base de datos de autenticación:

$uri = 'mongodb://<username>:<password>@<hostname>:<port>/?authSource=users';
$client = new MongoDB\Client($uri);

Es posible que la biblioteca PHP no pueda resolver su conexión DNS. En este caso, podría recibir un mensaje de error similar al siguiente:

No suitable servers found (`serverSelectionTryOnce` set): [Failed to resolve '<host>'].

Si la biblioteca informa este error, pruebe los métodos de las siguientes secciones para resolver el problema.

Si se está conectando a MongoDB Atlas y su controlador no puede encontrar el host DNS de la implementación de la base de datos Atlas, es posible que la implementación de la base de datos se pause o elimine.

Asegúrese de que la implementación de la base de datos exista en Atlas. Si el clúster está en pausa, puede reanudarlo en la interfaz de usuario de Atlas o en la interfaz de línea de comandos de Atlas.

Para saber cómo reanudar un clúster,consulte Reanudar un clúster en la documentación de Atlas.

Verifique que las direcciones de red o los nombres de host en su URI de conexión sean correctos.

Si su implementación está alojada en MongoDB Atlas, puede seguir el tutorial Conectarse a su clúster para encontrar su URI de conexión Atlas.

Volver

AWS Lambda

En esta página