致命错误:函数名称必须是第1296行的public_html / install / index.php中的字符串

时间:2011-04-19 19:13:15

标签: php html

警告:请在第1295行的/public_html/install/index.php上与支持小组联系以了解相关信息

致命错误:函数名称必须是第1296行/public_html/install/index.php中的字符串

好的,所以我在解释整个事情上做得不好。所以基本上我正在尝试在我的网站上安装Boonex Dolphin 7.0.6(社交网络CMS)。我正确安装了所有文件。我去了安装页面。去了第二页,我必须把所有文件写成可写的。一旦我将所有文件写成Writable,我就进入了名为“Paths”的下一页。这就是它给我上面的错误的地方。该文件有超过1483行。这是下面的代码。

它所说的$func = create_function("", $funcbody);那就是1295号线

第1281 - 1350行

function printInstallError($sText) {
    $sRet = (strlen($sText)) ? '<div class="error">' . $sText . '</div>' : '';
    return $sRet;
}

function createTable($arr) {
    $ret = '';
    $i = '';
    foreach($arr as $key => $value) {
        $sStyleAdd = (($i%2) == 0) ? 'background-color:#ede9e9;' : 'background-color:#fff;';

        $def_exp_text = "";
        if (strlen($value['def_exp'])) {
            $funcbody = $value ['def_exp'];
            $func = create_function("", $funcbody);
            $def_exp = $func();
            if (strlen($def_exp)) {
                $def_exp_text = "&nbsp;<font color=green>found</font>";
                $value['def'] = $def_exp;
            } else {
                $def_exp_text = "&nbsp;<font color=red>not found</font>";
            }
        }

        $st_err = ($error_arr[$key] == 1) ? ' style="background-color:#FFDDDD;" ' : '';

        $ret .= <<<EOF
    <tr class="cont" style="{$sStyleAdd}">
        <td>
            <div>{$value['name']}</div>
            <div>Description:</div>
            <div>Example:</div>
        </td>
        <td>
            <div><input {$st_err} size="30" name="{$key}" value="{$value['def']}" /> {$def_exp_text}</div>
            <div>{$value['desc']}</div>
            <div style="font-style:italic;">{$value['ex']}</div>
        </td>
    </tr>
EOF;
        $i ++;
    }

    return $ret;
}

function rewriteFile($sCode, $sReplace, $sFile) {
    $ret = '';
    $fs = filesize($sFile);
    $fp = fopen($sFile, 'r');
    if ($fp) {
        $fcontent = fread($fp, $fs);
        $fcontent = str_replace($sCode, $sReplace, $fcontent);
        fclose($fp);
        $fp = fopen($sFile, 'w');
        if ($fp) {
            if (fputs($fp, $fcontent)) {
                $ret .= true;
            } else {
                $ret .= false;
            }
            fclose ( $fp );
        } else {
            $ret .= false;
        }
    } else {
        $ret .= false;
    }
    return $ret;
}

如果您需要更多代码请告诉我,所以我也可以帮助您阅读此^ _ ^并重新帮助。我也尝试了最后一个人说的添加“$ a”和“;”但它没有帮助。给我带来了更多的错误。

2 个答案:

答案 0 :(得分:1)

什么可以存储在$value['def_exp']

因为您的create_function来电未返回值。或者看起来如此。我做了一个简单的模拟来展示一个例子:

$funcbody = 'hello';
$func = create_function('$a', 'return $a;');
$def_exp = $func($funcbody);

这可以按预期工作。根据{{​​1}}中的内容,您需要在IE之后添加$funcbody

;

前面是$func = create_function('$a', $funcbody . ';'); ,后面是return

;

或者将其作为参数传递,就像我在第一个示例中所做的那样。不确定你需要哪些,因为我不知道$func = create_function('$a', 'return ' . $funcbody . ';'); 中存储了什么,但希望能让你滚动。

答案 1 :(得分:1)

create_function()可能失败了。尝试

var_dump( $func );

如果是false,那么这就是原因,您应该查看$funcbody