お世話様です。
MODXを1.0.20Jにアップデートし、さぁ更新しようと思ってリソースを編集・更新しようとすると書きエラーが出ます。
Error : preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
ErrorType[num] : WARNING[2]
File : /oooooo/assets/plugins/transalias/transalias.class.php
Line : 151
Source : $alias = preg_replace('/&#x([0-9a-f]{1,7});/ei', 'chr(hexdec("\\1"))', $alias);
LastQuery : SELECT uga.documentgroup as documentgroup FROM `database_name`.`modx_member_groups` ug INNER JOIN `database_name`.`modx_membergroup_access` uga ON uga.membergroup=ug.user_group WHERE ug.member='1'
preg_replaceをpreg_replace_callbackに変えなさいという内容までは分かり、変えてやってみましたが今度は「そうではない!」と怒られてしまいました。
何か解決方法はありますでしょうか?
ちなみにMODXは下記よりダウンロード、アップデートしています。
https://github.com/modxcms-jp/evolution ... master.zip
よろしくお願い致します。
リソースを更新するとエラーが出ます
リソースを更新するとエラーが出ます
現行のEvolution CMSのリソースから一部拝借してくるというのはいかがでしょうか。
具体的には「transalias.class.php」に以下の2メソッドを「convert_entity」メソッドの下あたりに加え、
実際に加工されたと思われる以下の2行を
以下のように書き換えます。
このプラグイン自体、使ったことがないのでよくわからないのですが、パターン修飾子「e」はPHP7で削除になったので、実際にPHP7.1.xの環境で試すと同じにエラーが出ていました。上記のように修正してみたところ、とりあえずは正常に動作しているようです。
具体的には「transalias.class.php」に以下の2メソッドを「convert_entity」メソッドの下あたりに加え、
コード: 全て選択
/**
* Convert hexadecimal entities to their actual character.
*
* @param array $matches matches array from preg_replace_callback
* @return string converted entity
*/
function convert_hex_entity($matches)
{
return chr(hexdec($matches[1]));
}
/**
* Convert numeric entities to their actual character.
*
* @param array $matches matches array from preg_replace_callback
* @return string converted entity
*/
function convert_numeric_entity($matches) {
return chr($matches[1]);
}
コード: 全て選択
// Convert all numeric entities to their actual character
$alias = preg_replace('/&#x([0-9a-f]{1,7});/ei', 'chr(hexdec("\\1"))', $alias);
$alias = preg_replace('/&#([0-9]{1,7});/e', 'chr("\\1")', $alias);
コード: 全て選択
// Convert all numeric entities to their actual character
$alias = preg_replace_callback('/&#x([0-9a-f]{1,7});/i', array($this, 'convert_hex_entity'), $alias);
$alias = preg_replace_callback('/&#([0-9]{1,7});/', array($this, 'convert_numeric_entity'), $alias);
リソースを更新するとエラーが出ます
mod_kks さま
お世話になります。
何と言ったら良いのでしょうか。
素晴らしすぎます!
一発で解決出来ました!
PHPも7.1.15となっていましたので、mod_kks さまのご指摘の通りに改変しましたら問題なく動作しております。
本当にありがとうございました!
お世話になります。
何と言ったら良いのでしょうか。
素晴らしすぎます!
一発で解決出来ました!
PHPも7.1.15となっていましたので、mod_kks さまのご指摘の通りに改変しましたら問題なく動作しております。
本当にありがとうございました!
リソースを更新するとエラーが出ます
こちら確認しました。transaliasプラグインは日本版では数年前から同梱していないので、transaliasプラグインが
古いまま運用していたため今回の問題が発生したものと思います。
なので、transaliasプラグイン自体をアップデートしていただいてもよいかもです。
古いまま運用していたため今回の問題が発生したものと思います。
なので、transaliasプラグイン自体をアップデートしていただいてもよいかもです。