先日、使用しているコアサーバーが、システムのアップデートが行われ、MTOS 5.2.13にログインできなくなりました。
Got an error: Unescaped left brace in regex is illegal here in regex; marked by <-- HERE in m/{{ <-- HERE support}}/?/
というエラーがでます。
Perlバージョンが「5.26」に変更になった為に、古いMTOSが対応できず起きたエラーの様です。
サーバ会社の案内どおり、lib/MT/App/CMS.pmの内容に変更して、ログインできるようになりました。
ここから本題です。
この後、MTOS 5.2.13にカスタムフィールド項目を追加するAnotherCustomFieldsにて新しいフィールドを追加する為、/EntryFields/config.yamlを変更し、サーバにファイルをアップロードしました。
直後MTOS側でアップデートが開始されるのですが、
Got an error: \C no longer supported in regex; marked by
というエラーが表示されアップデートされなくなり、mt.cgiにアクセス、ログインすらできなくなりました。
恐らく、lib/MT/App/update.pm内で、Perl5.26に対応していない箇所があると思うのですが、Perlの知識がないので分かるのはここまでです。
どうする事もできなくなりました。
解決方法をご教授いただけたらとありがたく思います。
よろしくお願いします。
naganaga34さん
下記ページに、同様事例での解決例が紹介されています。
http://www.hirno.net/~wind/blog/2018/04/movabletypeperl-526.html
当方の場合、かなり以前の確認で、かつローカル環境ではありますが、この情報を元に対象ファイルを修正したところ、元どおり動作するようになりました。一度お試しください。
>melodicantさん
返信ありがとうございます。
ご紹介いただいたページに書いてある対策は、施しております。
その上で、upgrade.cgiが起動すると、
というエラーが表示されアップデートされなくなり、mt.cgiにアクセス、ログインすらできなくなりました。
恐らく、lib/MT/App/Upgrader.pm内で、Perl5.26に対応していない箇所があると思うのですが、分かりません。
>naganaga34さん
参考になるか分かりませんが、下記のページではextlib/URI/Escape.pmを対処されているようです。
http://www.webkoza.com/rooms/2019/02/fedora29mt522.html
参考に、MT5.2.2のextlib/URI/Escape.pmと、最新版のMT7-R5202のextlib/URI/Escape.pmの原因と思われる箇所のコードを抜粋で掲載しておきます。
MT5.2.2
MT7-R5202
この関数だけ書き換えてOKになるるか等は未保証です。
ただ、MT5.2.2のextlibとlib配下すべてをgrepしたところ、"\C"を使っているのは、URI/EScape.pmのescape_char()のみでしたので、この箇所が原因である可能性は高いです。
なお、元のエラーの説明はPerl公式マニュアルに記載がありました。
https://perldoc.jp/docs/perl/5.28.0/perldiag.pod#37s32is32more32clearly32written32simply32as32-37s32in32regex59-32marked32by32--32HERE32in32m47-37s47
(「no longer supported in regex; marked by」でページ検索)
MT7-R5202に含まれるEscape.pmは、マニュアルに書かれている対処を行っているようです。
>yujiroさん
返信ありがとうございます。
ご紹介いただいた対処を行いますので。問題なく動きました。
現在、管理画面にログインできています。
extlib/URI/Escape.pmの該当箇所を、そのまま入れ替えただけで動作しました。
助かりました。
ありがとうございます。