Modx Evo,PHP 5.4和eval

时间:2013-03-27 22:28:02

标签: php content-management-system eval modx modx-evolution

对Modx和最新版本的PHP有点问题。

这是一个非常老版本的Modx(不要问 - 我有完全相同的想法,不在我的控制之下)。该网站在PHP 5.2上运行良好。

问题是Web主机正在升级到PHP 5.4 - 因此网站完全中断。我无法解决的一个问题是在“evalSnippet()”函数下的manager / includes / document.parser.class.inc.php中使用eval,它调用了折旧的eval()函数。

我已经考虑过将Modx升级到最新版本1.0.9的可能性,但是这仍然使用eval() - >即使它表明这个版本支持PHP 5.4。以下是代码:

function evalSnippet($snippet, $params) {
    $etomite= $modx= & $this;

    $modx->event->params= & $params; // store params inside event object
    if (is_array($params)) {
        extract($params, EXTR_SKIP);
    }
    ob_start();
    $snip= eval ($snippet);
    $msg= ob_get_contents();
    ob_end_clean();
    if ((0<$this->config['error_reporting']) && isset($php_errormsg))
    {
        $error_info = error_get_last();
        if($error_info['type']===2048 || $error_info['type']===8192) $error_type = 2;
        else                                                         $error_type = 3;
        if(1<$this->config['error_reporting'] || 2<$error_type)
        {
            extract($error_info);
            if($msg===false) $msg = 'ob_get_contents() error';
            $result = $this->messageQuit('PHP Parse Error', '', true, $type, $file, 'Snippet', $text, $line, $msg);
            if ($this->isBackend())
            {
                $this->event->alert("An error occurred while loading. Please see the event log for more information<p>{$msg}{$snip}</p>");
            }
        }
    }
    unset ($modx->event->params);
    return $msg . $snip;
}

周围有吗?有没有人设法让Modx Evo使用PHP 5.4?

1 个答案:

答案 0 :(得分:1)

继续对原帖发表评论......

从PHP 5.3开始,不推荐使用

session_is_registered()。您需要检查您的代码段,找出哪个使用此功能,然后将其替换为isset($_SESSION['name_of_variable'])

找到它的最快方法是在%LIKE%上的session_is_registered的phpMyAdmin中运行modx_site_snippets table搜索