Modx と最新バージョンの PHP で少し問題が発生しました。
これは非常に古いバージョンの Modx です (聞かないでください - 私もまったく同じ考えを持っていますが、自分ではどうすることもできませんでした)。サイトは PHP 5.2 で正常に動作しています。
問題は、Web ホストが PHP 5.4 にアップグレードされていることです。その結果、サイトが完全に機能しなくなります。私が解決策を得ることができない 1 つの問題は、「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 で動作させることができた人はいますか?