php parse_ini_file和常量的使用

时间:2017-09-15 09:10:16

标签: php

也许有人可以给我一个想法,因为我到目前为止还没有使用过很多PHP。我在我的本地apache2上安装了一个php web应用程序并且遇到了麻烦,而其他许多人假装代码对他们有效。

以下是代码中所做操作的示例。 Ini文件用于存储配置。让我们称之为“my_config.cfg”:

FOO=2
BAR=something

现在代码如下所示:

$config = parse_ini_file("/opt/test/my_config.cfg", TRUE);
for ($i = 0; $i < $config[FOO]+1; $i++) {
  ..
}

这给了我一个关于使用非声明常量的错误。为了使其工作,我需要更改代码以使用引号:

$config = parse_ini_file("/opt/test/my_config.cfg", TRUE);
for ($i = 0; $i < $config['FOO']+1; $i++) {
  ..
}

问题是,上述代码如何为其他人工作?在我看来,它应该永远不会没有引号。在上面的例子中,我检查了“FOO”的定义语句的整个代码。空无一人。因此,我目前对此有点困惑,并且无法在该主题上谷歌任何内容。

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

阅读错误消息,它说:

  

注意:使用未定义的常量FOO - 假设&#39; FOO&#39;

这意味着因为没有名为FOO的常量,所以它会将$config[FOO]视为您写的$config['FOO'] - 它试图成为当你犯这样的错误时会有所帮助。

如果其他人禁用了警告,他们会获得相同的行为但没有警告信息。

答案 1 :(得分:0)

好的,这意味着以下日志语句并不重要:

[Thu Sep 14 22:50:00.595913 2017] [:error] [pid 8365] [client 192.168.0.128:50717] PHP Notice:  Use of undefined constant SLM_ANZAHL - assumed 'SLM_ANZAHL' in /var/www/include/config.php on line 62

因为它将其视为&#39; SLM_ANZAHL&#39; - 对?没有想到这一点,因为它表示为&#34;错误&#34;