Incluyendo variables dentro de llaves en un archivo ini Zend config en Linux
-
21-09-2019 - |
Pregunta
Estoy tratando de incluir una variable en una configuración de archivo .ini rodeándolo con llaves, y Zend se queja de que no puede analizar correctamente en Linux. Funciona correctamente en Windows, sin embargo:
welcome_message = Welcome, {0}.
Este es el error que se está lanzando en Linux:
: Uncaught exception 'Zend_Config_Exception' with message 'Error parsing /var/www/html/portal/application/configs/language/messages.ini on line 10
' in /usr/local/zend/share/ZendFramework/library/Zend/Config/Ini.php:181
Stack trace:
0 /usr/local/zend/share/ZendFramework/library/Zend/Config/Ini.php(201): Zend_Config_Ini->_parseIniFile('/var/www/html/p...')
1 /usr/local/zend/share/ZendFramework/library/Zend/Config/Ini.php(125): Zend_Config_Ini->_loadIniFile('/var/www/html/p...')
2 /var/www/html/portal/library/Ingrain/Language/Base.php(49): Zend_Config_Ini->__construct('/var/www/html/p...', NULL)
3 /var/www/html/portal/library/Ingrain/Language/Base.php(23): Ingrain_Language_Base->setConfig('messages.ini', NULL, NULL)
4 /var/www/html/portal/library/Ingrain/Language/Messages.php(7): Ingrain_Language_Base->__construct('messages.ini', NULL, NULL, NULL)
5 /var/www/html/portal/library/Ingrain/Helper/Language.php(38): Ingrain_Language_Messages->__construct()
6 /usr/local/zend/share/ZendFramework/library/Zend/Contr in
Estamos en condiciones de obtener el error de irse en Linux si nos rodeamos de las llaves con citas, pero eso parece una solución extraña:
welcome_message = Welcome, "{"0"}".
¿Hay una mejor manera de resolver este problema para todas las plataformas? Gracias por su ayuda,
David
Solución
¿Qué hay de tener todo el mensaje entre comillas?
Un poco como esto:
welcome_message = "Welcome, {0}."
Citando la documentación de parse_ini_file
(que podría utilizar Zend_Config_Ini
)
Nota: Si un valor en el archivo ini contiene cualquier no alfanumérico personajes que tiene que estar incluido en comillas dobles (
"
).
Y, también (el énfasis es mío)
Nota: No son palabras reservadas, que No debe ser utilizado como claves para ini archivos.
Estos incluyen:null
,yes
,no
,true
,false
,on
,off
,none
.
Valoresnull
,no
yfalse
resultados en""
, sí y los verdaderos resultados en"1"
.
Caracteres{}|&~![()^"
no debe utilizarse en cualquier lugar de la llave y Tienes una un significado especial en el valor .