0

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

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

问题是网络主机正在升级到 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 一起工作?

4

1 回答 1

1

继续对原始帖子的评论...

session_is_registered()自 PHP 5.3 起已弃用。您需要检查您的代码片段并找出哪个正在使用此功能,然后将其替换为isset($_SESSION['name_of_variable']).

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

于 2013-03-27T23:00:09.030 回答