不推荐使用:不推荐使用以“#”开头的注释

时间:2016-10-31 02:32:33

标签: php

我正在与用户ab运行lighttpd我之前已经搜索过此问题,并且所有解决方案都说我必须将#/etc/php.ini开头的所有行更改为{ {1}}但在我的;文件中,没有以php.ini开头的行,所有内容都已使用#而不是;。错误说:

#

Deprecated: Comments starting with '#' are deprecated in Unknown on line 11 in /www/log.php on line 224 Deprecated: Comments starting with '#' are deprecated in Unknown on line 11 in /www/log.php on line 175 的错误位于以下行:

log.php

我该如何解决这个问题?

更新 是的,我的文件包含$array = parse_ini_string(str_replace(' ', '=', file_get_contents('/home/ab/config'))); $profile = parse_ini_string(str_replace(' ', '=', file_get_contents('/home/ab/profiles/'.$array['profile']))); ,它们看起来像这样:

#

1 个答案:

答案 0 :(得分:0)

likely running PHP version 5.6或更早,因为parse_ini_string函数中的PHP 7 interprets the # comments as ini directives

$ini = <<<'EOINI'
payload_inject '10'
#info 'abc def'
#info 'xyz 123'
EOINI;
$array = parse_ini_string(str_replace(' ', '=', $ini));
print_r($array);

输出

Array
(
    [payload_inject] => 10
    [#info] => xyz=123
)

因此,您应该使用#替换行首的;字符:

$ini = file_get_contents($filename);
$ini = preg_replace('/^\s*#/m', ';', $ini);
$array = parse_ini_string(str_replace(' ', '=', $ini));

其中m是多行modifier