Pentium 150MHz機にてFreeBSD 4.10+MovableType 3.17で構成されていたこのweblogは、7月くらいからひどいトラックバック爆弾、コメント爆弾といういわゆるsplogを受けていて、一部のMovableTypeの管理画面が開かなくなるくらいにメンテナンス困難になっていた。MovableType 3.2でsplogフィルタ機能が搭載されていたのだが、面倒くさがってバージョンアップをさぼったのが災いした。
そのため、本日ようやくMovableType最新バージョンである3.33に更新した。
バージョンアップ自体は、MovableTypeのオンラインマニュアルに従って意外と簡単に終わったのだが、「サイトの再構築」で
Can't call method "allow_pings" on an undefined value at lib/MT/Template/ContextHandlers.pm line 3788.
というエラーが出るようになった。
上記ContextHandlers.pmファイルを中心にがんばって調べたのだが、結局なぜ3788行目の
--------------------------
if ($entry->allow_pings) {
--------------------------
の$entryがundefinedになることがあるのかが調べ切れなかった。使用しているテンプレートが悪いのだろうか。とりあえず、この1行を
--------------------------
if ($entry && $entry->allow_pings) {
--------------------------
に書き換えると「サイトの再構築」が成功したので、ここに記録しておく。
それから、MovableType 3.17で作成したエントリーを検査してわかったことだが、エントリー本文にタブ文字を含めていると、アーカイブディレクトリに生成されるhtmlファイルのファイル名にタブ文字が含まれてしまい、参照不能になってしまうことがあることがわかった。エントリー本文の最初の英単語がファイル名に使われることがあるようなので、最初の英単語の後ろにタブ文字を置かないように気を付けた方が良さそうだ。
ynomura
2007年に入ってから、新しいエントリーを投稿すると、
---
Can't use string ("MT::Log::Entry::") as a symbol ref while "strict refs" in use at lib/MT/Log.pm line 95.
---
というエラーが出るようになった。この時、エントリーは保存されるが、ページの構築はされない。ページの再構築をすると正常にHTMLのページが生成されるようだが、面倒だ。
CGIを解析したがよくわからなかったので、lib/MT/Log.pmの'use strict;'の下に'no strict "refs";を加えたら、とりあえず問題なく動いてるようなので、ここに記しておく。