对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?
答案 0 :(得分:1)
继续对原帖发表评论......
从PHP 5.3开始,不推荐使用 session_is_registered()
。您需要检查您的代码段,找出哪个使用此功能,然后将其替换为isset($_SESSION['name_of_variable'])
。
找到它的最快方法是在%LIKE%
上的session_is_registered
的phpMyAdmin中运行modx_site_snippets table
搜索