0

我有一个带有 ubuntu 12.04 并运行 apache2 作为 Web 服务器的 VM。我已经安装了 PHP 5.3.10,每次我运行一个 php 应用程序时,我的 php.ini 都会抛出这个错误:

PHP:  syntax error, unexpected BOOL_FALSE in /etc/php5/cli/php.ini on line 1020

我希望在 php.ini 中没有正确注释掉某些内容,但是当我查看它时,我看不出有什么问题:

1007 [Pcre]
1008 ;PCRE library backtracking limit.
1009 ; http://php.net/pcre.backtrack-limit
1010 ;pcre.backtrack_limit=100000
1011 
1012 ;PCRE library recursion limit.
1013 ;Please note that if you set this value to a high number you may consume all
1014 ;the available process stack and eventually crash PHP (due to reaching the
1015 ;stack size limit imposed by the Operating System).
1016 ; http://php.net/pcre.recursion-limit
1017 ;pcre.recursion_limit=100000
1018 
1019 [Pdo]
1020 ; Whether to pool ODBC connections. Can be one of "strict", "relaxed" or "off"
1021 ; http://php.net/pdo-odbc.connection-pooling
1022 ;pdo_odbc.connection_pooling=strict
1023 
1024 ;pdo_odbc.db2_instance_name
1025 
1026 [Pdo_mysql]
1027 ; If mysqlnd is used: Number of cache slots for the internal result set cache
1028 ; http://php.net/pdo_mysql.cache_size
1029 pdo_mysql.cache_size = 2000
1030 
1031 ; Default socket name for local MySQL connects.  If empty, uses the built-in
1032 ; MySQL defaults.
1033 ; http://php.net/pdo_mysql.default-socket
1034 pdo_mysql.default_socket=

这有什么奇怪的吗?

所有应用程序都运行我只是厌倦了看到这个错误并且不知道是什么导致它。

4

2 回答 2

5

简短的回答:

不要相信行号,在错误中提到的行之前的行中查找语法错误。

长答案:

我也有这个错误,原来我在时区周围缺少引号。

我原来的错误是:

PHP:  syntax error, unexpected BOOL_FALSE in /etc/php5/cli/php.ini on line 929

在第876行,我有:

[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Europe/Madrid"

在那之后有很多注释掉的行,下一个未注释的行是938。最初的错误说第929行有一个错误,这使事情变得非常神秘。我认为行号的差异与 php.ini 文件的解析方式有关,但关键是行号不可信。

在我更正第 876 行缺少的引号后,错误消失了。

于 2013-08-21T19:35:00.527 回答
-2

此函数解决了问题并修复了 PHP parse_ini_file 生成的一些错误。顺便说一句,xtalk_parse_ini_file 像 parse_ini_file 一样工作

function xtalk_parse_ini_file( $filename ){

    $arr = array();

    $file = fopen( $filename, "r" );

    $section = "";
    $ident = "";
    $value = "";

    while ( !feof( $file ) ){           
        $linha = trim(fgets( $file )); 

        if (!$linha){
            continue;
        }   

        // replace comments
        if (substr($linha, 0, 1) == ";"){
            continue;
        }   

        if (substr($linha, 0, 1) == "["){
            $section = substr($linha, 1, strlen($linha)-2);
            continue;
        }

        $pos = strpos($linha, "=");
        if ($pos){
            $ident = trim(substr($linha, 0, $pos - 1));
            $value = trim(substr($linha, $pos + 1, strlen($linha) - $pos + 1 ));

            $pos = strpos($value, ";");
            if ( $pos ){
                $value = trim(substr($value, 0, $pos - 1 )); // replace comments    
            }

        }

        $arr[$section][$ident] = $value;

    }

    fclose($file);

    return $arr;

}
于 2018-03-13T14:37:42.980 回答