2024年4月アーカイブ

perl5.26となる進化?を遂げたCORESERVERサーバー。mtos5.2を新規インストールした儘ではなく、せめてスタイルキャッチャーぐらい使って、見た目も変化させてみたいかなと。

★ですが、スタイルを適用しようとクリックすると、又もや例のエラーが。

Movable Type

エラーが発生しました。
failed loading package StyleCatcher::CMS for routine StyleCatcher::CMS::view: Unescaped left brace in regex is illegal here in regex; marked by <-- HERE in m/{{ <-- HERE static}}/

正規表現の中で、左括弧「{{」がエスケープされてないと言うエラーです。


◆次の3ファイルを下記のように修正の上、正常に動作するか、確認して下さい。

①plugins\StyleCatcher\lib\StyleCatcher\CMS.pm
②plugins\StyleCatcher\lib\StyleCatcher\Library\Default.pm
③plugins\StyleCatcher\lib\StyleCatcher\Library\Local.pm

・CMS.pm ファイルの65行目、66行目、68行目
65: $lib->{url} =~ s/{{static}}/$static_webpath/i;
66: $lib->{url} =~ s/{{support}}/$support_url/i;
68: =~ s/{{theme_static}}/MT::Theme::static_file_url_from_id($lib->{key})/ie;
↓↓↓
65: $lib->{url} =~ s/\{\{static}}/$static_webpath/i;
66: $lib->{url} =~ s/\{\{support}}/$support_url/i;
68: =~ s/\{\{theme_static}}/MT::Theme::static_file_url_from_id($lib->{key})/ie;


・Default.pm ファイルの22行目、23行目、25行目
22: $url =~ s/{{static}}/$static_webpath/i;
23: $url =~ s/{{support}}/$support_url/i;
25: =~ s/{{theme_static}}/MT::Theme::static_file_url_from_id($self->key)/ie;
↓↓↓
22: $url =~ s/\{\{static}}/$static_webpath/i;
23: $url =~ s/\{\{support}}/$support_url/i;
25: =~ s/\{\{theme_static}}/MT::Theme::static_file_url_from_id($self->key)/ie;


・Local.pm ファイルの27行目、28行目、30行目、38行目、39行目、41行目
27: $path =~ s/{{static}}/$static_path/i;
28: $path =~ s/{{support}}/$support_path/i;
30: =~ s/{{theme_static}}/MT::Theme::static_file_path_from_id($self->key)/ie;
38: $url =~ s/{{static}}/$static_webpath/i;
39: $url =~ s/{{support}}/$support_url/i;
41: =~ s/{{theme_static}}/MT::Theme::static_file_url_from_id($self->key)/ie;
↓↓↓
27: $path =~ s/\{\{static}}/$static_path/i;
28: $path =~ s/\{\{support}}/$support_path/i;
30: =~ s/\{\{theme_static}}/MT::Theme::static_file_path_from_id($self->key)/ie;
38: $url =~ s/\{\{static}}/$static_webpath/i;
39: $url =~ s/\{\{support}}/$support_url/i;
41: =~ s/\{\{theme_static}}/MT::Theme::static_file_url_from_id($self->key)/ie;

粗々2年前、CORESERVERサーバーにシステムの増強などを施す移行(マイグレーションだそうな)が行われました。新仕様のCORESERVERサーバーでは何と、perlのバージョンが5.26となってしまいました。

★難という悲劇、難という弱者切り捨て。じゃなかった、セキュリティーの強化なんだそうです。

其のお陰で、真面に動いていた筈のmtos5.2の動作にも降り懸かる不幸が・・・。

取り敢えず気を取り直して、バージョンアップされたCORESERVERサーバーに、perl5.26を利用してmtos5.2を新規インストールしてみる事に。


◆コアサーバーに設置したmtos5.2にアクセス

perl526のCORESERVERサーバーに設置したmtos52にアクセスすると、意外にも? インストール画面は正常に表示されましたが、「Movable Type システム・チェック」や「Movable Type にサインイン」をクリックするとエラーが容赦無く。。。

★Movable Type システム・チェックのエラーは無視

・Movable Type システム・チェックをクリックすると、以下の様なエラーが

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator at info@coreserver.jp to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.

・コアサーバーの難点は、エラーログを見られない事。(探し方が足りなかったのかな~)<他のレンタルサーバーも見る事が出来ないのでしょうか?>

・ヤフー(Yahoo!)で検索しても原因が分からなかったので、「Movable Type システム・チェック」のエラーはインストールに直接関係が無い事もあり、無視する事に。

★Movable Type にサインインのエラーについては

・Movable Type にサインインをクリックすると、以下の様なエラーが

Movable Type

エラーが発生しました。
\C no longer supported in regex; marked by <-- HERE in m/(\ <-- HERE C)/

・ヤフー(Yahoo!)を検索すると、以下の該当記事1件がヒットしました。

小粋空間さんの
https://www.koikikukan.com/archives/2022/06/30-235555.php
旧バージョンのMTでPerl5.26(Perl5.24以降)に対応する方法

extlib/URI/Escape.pmの sub escape_char の部分を書き換えるのだそうです。

sub escape_char {
return join '', @URI::Escape::escapes{$_[0] =~ /(\C)/g};
}

↓↓↓以下の様に書き換え↓↓↓

sub escape_char {
# Old versions of utf8::is_utf8() didn't properly handle magical vars (e.g. $1).
# The following forces a fetch to occur beforehand.
my $dummy = substr($_[0], 0, 0);

if (utf8::is_utf8($_[0])) {
my $s = shift;
utf8::encode($s);
unshift(@_, $s);
}

return join '', @URI::Escape::escapes{split //, $_[0]};
}

なのですが、『動作を保証するものではありませんので、個人の責任で行ってください。』と言う但し書きが。

★自己責任の決め手は、参照情報として記されていた以下の記事。

お茶の間さんの
http://www.webkoza.com/rooms/2019/02/fedora29mt522.html
Fedora29にMT5.2.2を導入

Escape.pmについてのエラー

このファイルは extlib/URI/ にコピーされたperl標準モジュールのようなので、cpanmでインストールされている最新のEscape.pmをこの場所にコピーして、webkoza_mt.servise再起動したところ、statusでこのモジュールのエラーは無くなった!

perl標準モジュール? 最新モジュールのコピーでエラーが無くなった?? との事なので、

関数 escape_char の内容を書き換える事に!!

CORESERVERのMovable Typeで、左括弧({)が正規表現の中でエスケープされてないエラーが発生
の記事の修正もお忘れなく。


◆「Movable Type にサインイン」をクリックしてmtos52の新規インストール処理を完了

Movable Type のシステムチェック画面で、

システムチェック画面

「必要なPerlモジュールは揃っています。」と表示されるのに、インストール画面の「Movable Type システム・チェック」は、何が気に入らなかったのでしょうね?

誰か、コアサーバーの「error log」が吐かれているのが何処か、知ってるなら教えて!!

★蛇足:データベースが MySQL 5.7 → MariaDB 10.6 へと変更されています

サーバー側はMariaDBとなりましたが、Movable Type 側で選べるのはMySQLのままです(当然ですよね、mtos5.2ですから)。

気にせずMySQLを選んで、インストールを終わらせましょう。