Home > PC > MovableTypeトラブル発生、解決。(2015/09,10)

MovableTypeトラブル発生、解決。(2015/09,10)

  • Posted by: おりおん
  • PC

このブログはFedora22な自宅サーバKana上のMovableTypeで運営しているのだが、少し前(9月前半辺り?)から、MovableTypeの管理画面(mt.cgi)にログインできない状況になっていた。ブラウザ上の表示から、Perl関連のエラー(コンパイルエラー?)が発生している気配だったが、たまたま、MovableTypeの新バージョン(6.2)がリリースされていたので、これに更新すれば直るのではないかと考えた。しかし、根本的な問題解決には予想以上に時間がかかってしまった。

MovableType 6.2の前に使っていたバージョンは6.1.2であったのだが、このバージョンではmt.cgiにアクセスするとブラウザ上の表示が

Got an error: Attempt to reload MT/Template.pm aborted.
Compilation failed in require

となっていて、Apacheのエラーログには以下のような感じでエラーが記録されていた。

[cgi:error] [pid 27235] [client xxx.xxx.xxx.xxx:yyyyy] AH01215: Possible precedence issue with control flow operator at lib/MT/App.pm line 1821.: /var/www/cgi-bin/mt/mt.cgi

該当する箇所の記述を確認したところ、どうやらPerlがバージョン5.20に更新された際の仕様変更により使用できなくなった記述方法が使われているようであった。どんな感じかというと、Perlのスクリプトで

return $value or die $error;

といった形式の記述が、演算子の優先順位の関係で不可とされたようなのだ。少し前にKanaのPerlは5.20に更新されたので、まさにこの仕様変更の影響を受けてしまったようだ。MovableType 6.1.2で管理画面にアクセスできなくなったのは、このためらしい。

で、MovableType 6.2にアップデートしたのだけれど、今度は mt-upgrade.cgiでエラーが発生。より正確には、mt-upgrade.cgiから呼び出されるextlib/JSON/PP.pmでのエラーである。

[cgi:error] [pid 32602] [client xxx.xxx.xxx.xxx:yyyyy] AH01215: Possible precedence issue with control flow operator at /var/www/cgi-bin/mt/extlib/JSON/PP.pm line 1471.: /var/www/cgi-bin/mt/mt-upgrade.cgi

このあたりになると、さすがに自力での解決が難しそうに思えてきたので、MovableTypeの開発元であるSixApartに問い合わせることにした。返答はまもなく到着。MovableType 6.2はPerl 5.20への正式対応を謳っていたのだが、このエラーについては、MovableType 6.2のパッケージ内に含まれるextlib/JSON/PP.pmがPerl 5.20へ対応できていなかったことが原因であることが判明。SixApart側から、PP.pmを更新して確認することを勧められたので、PP.pmを更新してみた。

で、更新後に確認を行ってみたのだけれど、mt.cgiにアクセスしようとするとブラウザ上にエラーが表示され、かつ、Apacheのエラーログにはエラーが記録されないという謎の状況に陥ってしまった。ふと思いついて、mt-config.cgi内に記載してマスクしていたDebugModeの設定を有効にしてみたところ、ブラウザ上のエラー表示はこんな感じになった。

Got an error: Attempt to reload MT/Template.pm aborted.
Compilation failed in require at lib/MT.pm line 2346.

該当箇所をチェックするため、Kana上でTemplate.pmの動作確認を行ってみた。

# perl -c Template.pm
Can't locate open.pm in @INC (you may need to install the open module) (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 …) at Template.pm line 11.
BEGIN failed--compilation aborted at Template.pm line 11.

この結果から、Perlのopen.pmパッケージがインストールされていないことが判明。Fedora22の環境だと、Perlのopenパッケージがencodingパッケージの依存関係のために別パッケージ化されていて、エンコーディング指定付きで openパッケージを使おうとするとそのままでは正常動作しないようだ。これの解決方法は簡単で、perl-openパッケージとperl-encodingパッケージを dnfにてインストールすればOKである。パッケージインストール後、mt.cgiにアクセスできることを確認。

以上で問題が解決したのだけれど、9月頃から10月中旬まで発生していたこの問題の影響と、純粋に時間不足のため、記事の追加に時間が空いてしまった。なお、前回記事(アクションカム導入)は問題解決後の初投稿である。ネタは他にもいくつか積み上がっているので、時間が取れ次第追加の予定。ちょっと時間が経ってしまったので鮮度は落ちてしまうが…。

Comments:0

コメントする

Home > PC > MovableTypeトラブル発生、解決。(2015/09,10)

Search

Feeds

Return to page top