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 一起工作?