MTOSの最近のブログ記事

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を選んで、インストールを終わらせましょう。

5/16(月)、コアサーバー(coreserver.jp)で最新高速サーバーへの移転メンテナンスが行われた結果、Movable Type 5で、ログインが出来なくなりました。

ログイン不可の症状は、たった一行表示のみ。

『Got an error: Unescaped left brace in regex is illegal here in regex; marked by <- HERE in m/{{ <- HERE support}}/?/』

仕方が無いので検索すると、

★本家Perl?のWebページ「perldiag - さまざまな Perl 診断メッセージ」(https://perldoc.jp/docs/perl/5.28.0/perldiag.pod)に解説が有りました。

Unescaped left brace in regex is illegal here in regex; marked by <-- HERE in m/%s/

(F) 正規表現中で リテラルな "{" 文字 (U+007B LEFT CURLY BRACKET) にマッチングしたいときに 覚えておくべき単純な規則は、何らかの方法で それぞれのリテラルな実体をエスケープすることです。 一般的に一番簡単なのは、"\{" のように逆スラッシュを前置するか、 かっこでかこむ ("[{]") ことです。. パターン区切り文字も中かっこの場合、マッチングする右中かっこ ("}") も、パーサーの混乱を避けるためにエスケープするべきです; 例えば:

 qr{abc\{def\}ghi}

リテラルな "{" 文字にエスケープを強制することにより、 将来のリリースで様々な方法で Perl 言語を拡張できるようになります。 既存のコードを不必要に壊すことを避けるために、 拡張が "{" をリテラルとして使うことと競合しそうにない文脈では 制限は強制されません。


★CORESERVERの運営元 バリューサーバー【サーバーシステムの増強と移行について】のページには、対処法のQ&Aが有りました(https://www.value-server.com/info/brandnew2022.html)。

Q:Movable Typeで「Got an error: Unescaped left brace in regex is illegal here in regex; marked by <-- HERE in m/{{ <-- HERE support}}/?/」が発生しました。

A:こちらのファイルを下記のように修正の上、正常に動作するかご確認下さい。 /virtual/アカウント名/public_html/ドメイン名/lib/MT/App/CMS.pm

4828行目
$css =~ s#{{support}}/?#$app->support_directory_url#ie;

$css =~ s#\{\{support}}/?#$app->support_directory_url#ie;

4830行目
$css =~ s#{{theme_static}}/?#$theme->static_file_url#ie;

$css =~ s#\{\{theme_static}}/?#$theme->static_file_url#ie;


ただ、何行目かは、それぞれお使いのMovable Typeのバージョンによって異なる様です。
<使用中のMTOS5は、4976行目と 4978行目>


★CORESERVER補足情報

・修正ファイルの場所
/public_html/設置したMTのディレクトリ名/lib/MT/App/CMS.pm

前回の「MTOS4.1英語版の日本語化 その2」、前々回の「MTOS4.1英語版の日本語化 その1」で、日本語化するための3ファイルの修正も終了しましたので、MTOS4.1をサーバーにインストールします。


・上記の日本語化を行っても、インストールの一番最初の画面は、次のように英語が表示されますが、

 それ以降のインストール表示画面は、日本語で表示されます。


・インストールの詳細は、「MovableType4.1のインストール」を参照して下さい。

 MTOS4.1の導入は、「MovableType4.1導入録 CORESERVER編」が参考になるかもしれません。

前回の「MTOS4.1英語版の日本語化 その1」で、日本語化するために修正した3ファイルの内容を確認します。


1.mt-check.cgiファイルの修正内容

60行目の"ja"の修正はOKですか?


2.MT.pmファイルの修正内容

917行目の"ja"の修正はOKですか?


962行目の"ja"の修正はOKですか?
963~966行目の"日本語サイトURL"の修正はOKですか?
968~972行目の"日本語関連設定"の修正はOKですか?


3.mt.phpファイルの修正内容

305行目の"ja"の修正はOKですか?

以上で、日本語化するために修正した3ファイルの内容確認は終了です。

・MovableTypeオープンソースのダウンロードサイトで、MTOS4.1(2008年2月20日現在)を入手します。

・入手した、「MTOS-4.1-en.zip」 を解凍します。
 ここでは解凍ソフトとして、日本で有名な「Lhaplus」を使用しています。

・解凍後、英語版パッケージを日本語化するために、

 (1)mt-check.cgi
 (2)libフォルダのMT.pm
 (3)phpフォルダのmt.php

 の3ファイルの内容を修正します。

 ここではテキスト・エディタとして、日本で有名な「秀丸」を使用します。


1.mt-check.cgiファイルを修正

 60行目に移動すると、次のような画面が表示されますので、

 言語の指定を日本語の「ja」に修正します。

 my $lang = 'en_US';
  ↓
 my $lang = 'ja';


2.MT.pmファイルを修正

 917行目に移動すると、次のような画面が表示されますので、

 言語の指定を日本語の「ja」に修正します。

 $mt->set_language('en_US');
  ↓
 $mt->set_language('ja');

 962行目に移動すると、次のような画面が表示されますので、

 ①言語の指定を日本語の「ja」に修正します。
 ②管理画面などで表示される英語情報を日本語(のURL)情報に変更します。
 ③言語情報を日本語関連情報に変更します。

 $defaults->{DefaultLanguage}{default} = 'en_US';
 $defaults->{NewsboxURL}{default} = 'http://www.sixapart.com/movabletype/news/mt4_news_widget.html';
 $defaults->{LearningNewsURL}{default} = 'http://learning.movabletype.org/newsbox.html';
 $defaults->{SupportURL}{default} = 'http://www.sixapart.com/movabletype/support/';
 $defaults->{NewsURL}{default} = 'http://www.sixapart.com/movabletype/news/';
 #$defaults->{HelpURL}{default} = '__HELP_URL__';
 $defaults->{DefaultTimezone}{default} = '0';
 $defaults->{MailEncoding}{default} = 'ISO-8859-1';
 $defaults->{ExportEncoding}{default} = '';
 $defaults->{LogExportEncoding}{default} = '';
 $defaults->{CategoryNameNodash}{default} = '0';
 $defaults->{PublishCharset}{default} = 'utf-8';
  ↓
 $defaults->{DefaultLanguage}{default} = 'ja';
 $defaults->{NewsboxURL}{default} = 'http://www.sixapart.jp/movabletype/news/newsbox.html';
 $defaults->{LearningNewsURL}{default} = 'http://www.movabletype.jp/newsbox.html';
 $defaults->{SupportURL}{default} = 'http://www.sixapart.jp/movabletype/support/';
 $defaults->{NewsURL}{default} = 'http://www.sixapart.jp/movabletype/';
 #$defaults->{HelpURL}{default} = '__HELP_URL__';
 $defaults->{DefaultTimezone}{default} = '9';
 $defaults->{MailEncoding}{default} = 'ISO-2022-JP';
 $defaults->{ExportEncoding}{default} = 'Shift_JIS';
 $defaults->{LogExportEncoding}{default} = 'Shift_JIS';
 $defaults->{CategoryNameNodash}{default} = '1';
 $defaults->{PublishCharset}{default} = 'utf-8';


3.mt.phpファイルを修正

 305行目に移動すると、次のような画面が表示されますので、

 言語の指定を日本語の「ja」に修正します。

 $cfg['defaultlanguage'] = 'en_US';
  ↓
 $cfg['defaultlanguage'] = 'ja';


以上で、英語版パッケージを日本語化する修正作業は終わりです。

MovableType Open Source4.1のダウンロードサイトで、(安定版を)ダウンロード出来るのは、「MTOS-4.1-en.zip」の英語版だけです。


Six Apart社の技術情報によれば、

 「Movable Type はソフトウェア自体が完全に国際化されていて、ソースコードも一つのブランチで管理されています。ただ、実際にインストールして利用する際には、自分の国の言語がデフォルトで選択されているほうが便利なので、コンパイルオプションとして、デフォルトの言語設定を選べるようになっています。」

ということらしいので、MTOS4.1の日本語版は存在しないようです。


日本のオープンソース・プロジェクトのサイトでは、

 ・「最新のソースコード」をダウンロードしてソースコードをコンパイルする際にオプション指定をして、デフォルトで日本語を使用する設定や、

 ・「MTOSをWindows環境で利用する」のリンク先のページで、やはりソースコードをコンパイルする際にオプション指定をして、デフォルトで日本語を使用する設定

が説明されています。

然しながら、いずれも、SVN(Subversion)クライアントが必要であったり、Linux(Unix)やPerl、ビルドするためのツールが必要であったりと、MTOS4.1をブログツールとして利用したい人にとっては、ちょっと敷居が高いかもしれません。


ローカライズ日本語版を作成する参考サイトとして、

Ogawa::Memoranda : MTOS-4.1-jaパッケージの作り方

小粋空間 : MTOSリリースと日本語化手順

などがあります。

2007年12月、MovableType4のオープンソース化が発表され、
2008年2月18日現在、MTOS4.1(MovableType Open Source4.1)がダウンロード可能です。

Six Apart社のオープンソース化に対する大英断と、それを支えるオープンソースコミュニティーの皆さんの努力の素晴らしい結晶に感謝致します。


関連リンク:

 ・MTOS: Movable Type オープンソース・プロジェクト

 ・MTOS のダウンロード

 ・MTOS を Windows 環境で利用する


ただ、気になるというか残念な点は、ダウンロードできるパッケージが未だに英語版のみということです。

勿論、インストールの過程で使用言語に日本語を選択すれば、日本語でブログを作成するのに然程困らないとは思いますが、日本語版パッケージがダウンロード出来れば、結構なことこの上ないと感じられます。

このアーカイブについて

このページには、過去に書かれたブログ記事のうちMTOSカテゴリに属しているものが含まれています。

前のカテゴリはMT(OS)4.2です。

次のカテゴリはPC-Talkerです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

ウェブページ

お気に入りリンク

NOP法人 アジアチャイルドサポート 最も大切なボランティアは、自分自身が一生懸命に生きること