ユーザ用ツール

MovableType 5.2.9→6.2

概要

MovableType 6シリーズは、MySQLのみをバックエンドとして利用可能である。 5.2.9でこれ以外のバックエンドを利用している場合には、先にデータベースの移行を行う必要がある。 1) 移行に関しては、MovableType 5.2.9→5.2.9(データベース移行)を参照のこと。

旧バージョンからコピーしておくべきファイル群

  • plugins
  • addons
  • extlib
  • themes
  • mt-static/plugins
  • mt-static/addons
  • mt-static/support
  • mt-static/themes

これらのディレクトリで新しいバージョンにないものは既存のものからコピーしておく。 2)

バグ

6.2に入れ替えた途端に、ブログページが表示できなくなった。 サーバは500 (Internal error)を返すだけで、error_logにもなんの出力もない。 即ち、php の問題だ。

php.ini の中の次のパラメータをOnにして、apacheを再起動し、もう一度ページにアクセスすればエラーメッセージが表示される。

display_errors = On
log_errors = On

当サイトで遭遇したのは次の三点である。

  • DynamicMTML.pack の参照渡し
  • php/lib/class.mt_config.php の静的メンバーへの変数によるアクセス
  • lib./MT/Template/Tags/Asset.pm で非初期化変数へのlcに対する警告が出る

一点目は Notice なので、放置しても今のところ問題はないし、そもそも DynamicMTML.pack自体 5.2.9から引き写したものなので、いささか古い感は否めない。

二点目は、php 5.4で禁止されたコードで Fatal なので、これを直さない限り永劫にウェブページは表示されない。

php 5.3を推奨とかで済まされるレベルの話ではないので、どうにかしないといけないのだが、真面目にコードを修正するのも面倒なので、5.2.9のファイルをそのままコピーしてしまった。今のところ問題なく動いている。

三点目は、エラーではないが警告が出る。410行目の lc ()なのだが、

my $so
    = lc ( $args->{sort_order} )
    || ( $blog ? $blog->sort_order_posts : undef )
    || '';

となっている。確かに、 $args→{sort_order}は未初期化だし、実際に undefもあり得るから、このような評価式になっているのだと考えられる。 なので、

my $so
    = lc ( $args->{sort_order} 
    || ( $blog ? $blog->sort_order_posts : undef ))
    || '';

のように書き換えた。

MovableTypeに関して

1)
データベースの移行は、異なるMovableTypeのバージョン間ではできないので、まずデータベースの移行から行う必要がある。
2)
まれに古いプラグインなどは、新しいバージョンで利用できなくなっている場合がある。その場合はバージョンアップ後の管理画面から、新しいバージョンのものをインストールする。

This website uses cookies. By using the website, you agree with storing cookies on your computer. Also, you acknowledge that you have read and understand our Privacy Policy. If you do not agree, please leave the website.

More information