Cuando estamos en modo desarrollo generalmente usamos contraseñas sencillas  para nuestra base de datos o cuentas de usuarios, pero cuando es el momento de pasar a producción entonces si que elegimos una contraseña mucho mas difícil y si esto viene acompañado de los servicios donde estamos creando nuestra bd por ejemplo nuestro proveedor de hosting, Amazon RDS, etc. nos pedirá un mínimo de caracteres y que en estos se incluyan números, letras minúsculas mayúsculas y algún carácter especial lo cual nos obligara a legir entre los siguientes tipos de contraseñas:

 

[database]
  • pass = Mi#p4as&w0rd
  • pass = p4ss[W0rd#2013
  • pass = otraM!as$d1f|ok

y hasta aquí no hay ningún problema ya que es una password un tanto segura, en inconveniente viene cuando vamos a actualizar nuestros archivos de configuración, por ejemplo en KumbiaPHP que los datos de configuración están en un archivo .ini, por lo cual para obtener los valores se utiliz una funcion propia de PHP la cual es:

array parse_ini_file ( string $filename [, bool $process_sections = false [, int $scanner_mode = INI_SCANNER_NORMAL ]] )

parse_ini_file() carga el archivo ini especificado en filename, y devulve las configuraciones que hay en él a una matriz asociativa.

La estructura del archivo ini es la misma que la de php.ini.

y en la documentación oficial de PHP esta la siguiente nota:

Nota: Hay palabras reservadas que no se deben usar como claves en los archivos ini. Éstas incluyen: null, yes, no, true, false, on, off, none. Los valores null, no y false resultan en «», yes y true resultan en «1». Los caracteres ?{}|&~![()^» no se deben usar en ningún lugar de la clave y tienen un significado especial en el valor.

Por lo que si nos pasa esto nos encontraremos un un mensaje de que no se pudo conectar con BD o que acceso denegado para el usuario, ya que la estar usando caracteres no permitidos al momento de parsear nuestro archivo el campo password simplemente no tendrá ningún valor y por lo que no le estaremos enviando la contraseña.

Por lo que pueden ver este problema no es del framework que estén usando si no de las restricciones del propio PHP en estos tipos de archivos.

(Si desconocías esto probablemente pasaste algunos minutos u horas tratando de dar con el error ya que los mismos datos los usabas en otra conexión simple y si funcionaban, pero a veces así pasa).

  Documentación oficial

govani