If you have MongoClient class available and use persist option you will have a bad time and get a MongoConnectionException
For example if you have:
<?php
$options = array(
'replicaSet' => false,
'persist' => false,
'connect' => false
);
return new \Mongo('mongodb://...', $options);
?>
This will not work if you have the mongo client class a better way to handle this if your not sure what is on the server this code is running on is the following:
<?php
$options = array(
'replicaSet' => false,
'connect' => false
);
if(!class_exists('MongoClient')){
$options['persist'] = false;
}
return new \Mongo('mongodb:/...', $options);
?>
This will only add it in the case where MongoClient doesn't exist and it needs it. Hope this saves anyone some heart ache.
Clase MongoConnectionException
(PECL mongo >= 1.0.0)
Introducción
Lanzado cuando falla el driver al conectar a la base de datos.
Existen varios mensajes de error posibles para ayudar a diagnosticar el problema de conexión:
-
No server name given.
Este error ocurre al pasar "" como nombre de servidor, probablemente por error tipográfico con interpolación de strings, p.ej., "$servr" en lugar de "$server".
-
failed to get host [hostname] or port [portnum] from [server].
Indica que el nombre del servidor está malformado. "[hostname"] y "[portnum]" serán lo que el driver haya descifrado que sean.
-
Operation in progress
Superado el tiempo de espera de conexión a la base de datos.
-
Transport endpoint is not connected
Generalmente indica que la cadena de conexión no es correcta. De hecho, el driver no puede ni encontrar el servidor de bases de datos.
-
couldn't determine master
Ningún servidor de una conexión a un conjunto de réplicas fue identificado como el primario.
-
couldn't get host info for [server]
Indica que el DNS no puede resolver la dirección de servidor proporcionada. Posiblemente se trate de un error tipográfico, por ejemplo, "server" en lugar de "$server".
-
Invalid Argument
Puede provocarse al intentar conectar a una máquina que está funcionando pero la base de datos no está funcionando. Asegúrese de que ha iniciado la base de datos antes de conectar.
-
Permission denied
Significa que el socket no pudo ser abierto debido a los permisos. En las variantes de Red hat, puede ser debido a que la configuración por defecto no permite a Apache crear conexiones de red. Puede modificarse esto ejecutando:
y reiniciando Apache.$ /usr/sbin/setsebool -P httpd_can_network_connect 1
Si el mensaje de error no se encuentra en la lista de arriba, probablemente sea un error del socket C, y podrá buscar en la web la causa del mismo.
