在Linux上的Zend config ini文件中包含大括号内的变量

时间:2010-03-22 17:19:20

标签: php zend-framework parsing config ini

我试图通过用大括号括起来在.ini文件设置中包含一个变量,并且Zend抱怨它无法在Linux上正确解析它。它可以在Windows上正常运行:

welcome_message = Welcome, {0}.

这是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

如果我们用引号括起大括号,我们就可以在Linux上消除错误,但这似乎是一个奇怪的解决方案:

welcome_message = Welcome, "{"0"}".

有没有更好的方法来解决所有平台的这个问题?谢谢你的帮助,

戴夫

1 个答案:

答案 0 :(得分:7)

在引号之间传递整个信息怎么样?

有点像这样:

welcome_message = "Welcome, {0}."


引用parse_ini_file Zend_Config_Ini可能使用的)的文档:

  

注意:如果是ini文件中的值   包含任何非字母数字   需要包含的字符   双引号(")。

而且,(强调我的)

  

注意:有保留字   不得用作ini的键   文件。
其中包括:nullyesno,   truefalseonoffnone
值   nullnofalse会产生"",是的   "1"中的真实结果。
字符   不得使用{}|&~![()^"   密钥中的任何地方和都有   值中的特殊含义