top

MT3.32にはダイナミックで重大なバグあり & 修正方法

MT3.32が出ていたので、ダウンロードしてテスト環境で動作確認してみました。3.31ではダイナミックで<$MTArchiveCount$>が正しく出力されないバグがあったので、それが直っていればいいなと思って。その結果、この問題は解決していることが分かり、それではとさっそくWingMemoの方もアップグレードしたのですが、その後になってダイナミック・パブリッシングにて重大なバグがあったことが判明。

月別アーカイブで次の月へのリンクが全部最新月へのリンクになってしまうのです!

2006年7月の次の月が2006年8月なのはいいとして、2006年6月の次の月も2006年8月。2006年5月も4月も前の年の何月であろうとも次の月は全部2006年8月になってしまいます。ある意味、これは3.2時代のバグよりも酷い…(泣)。
何より困ったのが、フォトログにてPHP PreviousNextInCategoryというプラグインを使って同一カテゴリーでの前後リンクを表示していたのが、これも日付アーカイブと同じ現象になってしまい、次のエントリーへのリンクが全部そのカテゴリの最新エントリーになってしまいます。これでは前後リンクの意味をなさない~~。

<$MTArchiveCount$>が直ってもこれでは使い物にならないので、しかたがなく、いったん3.31に戻しました。それにしてもバージョンアップのたびにいつもダイナミックのどこかがおかしくなるのは、何とかしてもらえないでしょうか…。新機能が上手く動かないならまだしも、これまで正常に機能していたものがバージョンアップしたがために使えなくなるのは本当に困りますので(しかも毎回、基本中の基本のタグで…)。よろしくお願いします、sixapart様…。


<追記&修正方法>
バグの正体を突き止められたと思われるので、修正してみました。どうやら犯人は「phpフォルダ>libフォルダ」の中の mtdb_base.php のようです。

ダイナミックのバグならphpフォルダ以下にあることは間違いないので、今回のバージョンアップで更新されたファイルを1つ1つ3.31のファイルと置き換えながら動かしてみたところ、mtdb_base.php でピタリ。3.31と3.32で違うところを調べてみたところ、3.32で記述が抜け落ちている部分と追加された部分がみつかりました。追加部分は恐らく今回の修正箇所。となると抜け落ちている部分は…? 怪しい…。

で、抜けていた部分を追加してみたら月アーカイブの前後リンクが正しく動作するようになりました。個別頁内の同一カテゴリへの前後リンクも正しく動作するようになりました。よかった~。正式に直るまではこれでしのぐことにします。以下、修正箇所です。mtdb_base.phpの536行と537行の間に以下の赤字の部分を追加します。

 if (count($filters)) {
$post_select_limit = $limit;
$post_select_offset = $offset;
$limit = 0; $offset = 0;
}

$sql = "

        ↓

 if (count($filters)) {
$post_select_limit = $limit;
$post_select_offset = $offset;
$limit = 0; $offset = 0;
}

if ($args['sort_order']) {
if ($args['sort_order'] == 'ascend') {
$order = 'asc';
} elseif ($args['sort_order'] == 'descend') {
$order = 'desc';
}
}

$sort_field or $sort_field = 'entry_created_on';

$sql = "

ということで、無事MT3.32へアップグレードすることが出来ました。やっぱり<$MTArchiveCount$>は正しく出てくれた方がいいので…(もし、そこ間違ってるよーとかいうところがあれば教えてやって下さい)。

<追記2 2006.9.1>
この記事を書いたときは慌てていたのでそこまで気が回らなかったのですが、このバグは月別アーカイブ(日付アーカイブ)だけでなく、エントリーアーカイブにまで及んでいます(フォトログのカテゴリ内前後リンクがおかしくなったのもそのためです)。つまり<MTEntryNext>と<MTArchiveNext>が壊滅状態ということです。ここまでいくと運営への影響も大きいと思われるので、ダイナミック使用で3.32へアップグレードされた方・3.32から始めてダイナミック化しようとされている方はこの修正を行っておくことをおすすめします。

この修正が必要なバージョン:3.32 3.33 3.34 3.35

 

トラックバックの一覧

トラックバック MT 3.32 ダイナミック・パブリッシングのバグ修正  »» 2006年9月 1日 02:01
最新版MovableType3.32-jaのダイナミック・パブリッシングにて、月別アーカイブで 次の月へのリンクが全部最新月へのリンクになってしまうという...
トラックバック MovableType3.32がリリースされたが  »» 2006年9月 2日 22:20
ダイナミックページでどうやら重大なバグがあるようだ。 MT3.32が出ていたので、 ダウンロードしてテスト環境で動作確認...
トラックバック ダイナミック・パブリッシングの重大なバグ?・・・MT3.32  »» 2006年9月 2日 22:47
私には関係ないのだけど、入れたばかりのMT3.32にはダイナミックパブリッシング...
トラックバック MT3.32ダイナミックにバグ  »» 2006年9月 3日 22:23
ダイナミックにバグと言ってもめっちゃバグって事じゃありません(笑 先日リリースさ...
トラックバック MT3.32の最低なバグと修正方法  »» 2006年9月 5日 04:26
WingMemo: MT3.32にはダイナミックで重大なバグあり & 修正方法よ...
トラックバック 3.31から3.32へ  »» 2006年9月 5日 11:05
1週間前にアップデートしたばかりのMovable Typeが、またマイナ・アップ...
トラックバック MT導入日記 2006年09月08日  »» 2006年9月 8日 16:56
MT 3.3jaがりりーすされてたので、入れ替えてみました。 もー単純に全部上書き(笑) 問題はないかなーと思ったら、月別アーカイブの[次の月]へのリンク...
トラックバック MT3.32へアップグレード  »» 2006年9月12日 11:07
いつものように、MTディレクトリをバックアップし、新しいアーカイブを上書きするだ...
トラックバック Movable Type 3.32にしない理由  »» 2006年9月15日 14:47
いま現在、スーパーブログはMovable Type 3.31Jが動いています。 ...
トラックバック 動的生成で「次へ」にバグ  »» 2006年10月 1日 22:19
MovableType3.33にしてから、アーカイブページの「次へ・前へ」の遷移...
トラックバック MT3.33、ダイナミックパブリッシングでの不具合  »» 2006年11月 2日 19:36
先週、Movable Typeを3.2-ja-2から3.33-jaへアップデートしたが、今日になって妙な現象を発見した。個別エントリアーカイブと日付アーカ...
トラックバック 不具合の修正とタグクラウド  »» 2007年1月21日 01:43
久しぶりにMovable Type(ブログ)そのものをいじりました。 不具合とい...
トラックバック Movable Type 3.34へ  »» 2007年1月27日 12:17
アップしました。見た目何も変わっていない。 個別ページの、前のエントリーと次のエ...
トラックバック MT 3.34 ダイナミック・パブリッシングの不具合を修正  »» 2007年1月27日 23:15
Movable Type 3.34でダイナミック・パブリッシングを使用すると、エ...
トラックバック MT3.34、ダイナミックパブリッシング時にバグ。「次へ」が常に最新に。  »» 2007年2月 6日 06:01
年明けてから、一足飛びにMovable TypeをVer3.1から3.34にバー...
トラックバック MovableTypeのバージョンアップとメンテいろいろ  »» 2007年2月10日 20:15
ひさしぶりにこのブログで使っているMTをバージョンアップして、ついでにメンテしま...
トラックバック Movable Type 3.33へのアップグレード  »» 2007年3月14日 15:10
以前3.2へのアップグレードを行ったのですが、そのときの記録を何も残していなかっ...
トラックバック Movable Type 3.34 3.35 勝手に不具合・カスタマイズまとめ  »» 2007年4月21日 18:53
ページの改装は大体終わったわけだが、そもそもなかなか改装に踏み切れなかった理由...
トラックバック MT 自宅サーバへの移転と各種設定  »» 2007年4月26日 02:19
このブログはMT(MovableType)で構築しています。以前はレンタルサーバ...
トラックバック 静的→動的など、久々にいろいろと変更  »» 2008年3月30日 17:10
まぁ、このPandoraBoxではなくて、物欲ページの方なんですけどね。 記事数...

コメント

こんにちわ!以前(つい最近です)に、ムーバブルの幅の変更の仕方をおしえて頂いたものです。
上記の修正を早速やろう!と試みようと思ったのですが、
mtdb_base.phpがどこなのか、わかりません!!!
ほんと初心者質問で、申し訳ありませんが、ご指導お願いいたします。

ダイナミック・パブリッシングをお使いですか?
この修正はダイナミックを使ってない場合は必要ないものなので…。

mtdb_base.phpの位置は「php/lib/mtdb_base.php」です。
まずはphpというフォルダを開いて下さい。その中にlibというフォルダがあります。mtdb_base.phpはそのlibフォルダの中にあります。修正の前には念のためにmtdb_base.phpのバックアップをとっておくといいと思います。そうすれば間違えた時でもバックアップからコピーしてきて何度でも修正し直せますので。それではよろしくです。

アドバイスありがとうございました!!
ほんとド素人で、すみません。
ダイナミック・パブリッシングは使用してないと思うので、
これに関しては、問題なさそうです。

初心者質問に、親切にお答え頂き、大変ありがとうございました。

そうでしたか~。
もし3.3でダイナミック・パブリッシングを使われることがあったら、その時また参考にして下さいね。

わたしの悩みが解決できました。うれしいです。
ありがとうございました。

>erikoさん
コメントありがとうございます。
ダイナミックお仲間なのですね!
お役に立てたようで嬉しいです。次のバージョンでは直ってるといいですよね。

私もこちらのおかげで、不具合が解決できました。本当にありがとうございます♥。(レス不要です)

>Gさん
レス不要とのことですが、コメントありがとうございました♥
お役に立ててよかったです。

TAEKO様

シックス・アパートでMovable Typeの開発をしております、吉松と申します。

本件、実はMovable Type Enterprise 1.5では修正されております。ただし、その後Movable Typeの新バージョンを出すことができないまま、セキュリティFixなどが立て続けに行われたこともあり、MTEに入れた(セキュリティなどに比べると比較的)重要度の低いコードを3.x系に完全に取り込むことができないまま現在に至っております。

Movable Typeの開発は公開リポジトリで着実に進んでおりまして、新バージョンのベースとして開発されているコードネーム:Wheeljackというバージョン[1]では、本件も修正されています。ただ、Movable Typeの次のバージョンをいつ出荷できるか未定であるため、正式リリースに本件の修正コードが含まれるのがいつになるか、お約束することができません。ご迷惑をおかけして申し訳ありませんが、なにとぞご了承いただけますようにお願い申し上げます。

別途、フィードバックをいただいたメールアドレス宛にも返信いたします。そちらもご高覧いただければと思います。

[1] http://www.sixapart.jp/techtalk/2006/11/movable_type_wheeljack.html

>シックス・アパート 吉松様
このようなサイトにコメントとメールで回答いただきありがとうございます。

ここで載せているコードは必要に迫られて行った自己判断修正でしたが、それも内容確認していただき、「Wheeljackで行われている修正内容とほぼ同じであり、動作しているならそのまま使って問題ない」とのことでホッとしております。

メールからも詳しい説明をいただき、事情はよく分かりましたので、当面はこの仮修正でしのぎなら正式に直るのを気長に待たせていただくことにしようと思います。
本当にありがとうございました。

ありがとうございます。
おかげで修正できました。

>助かった人さん
コメントありがとうございます。
少しでもダイナミック仲間のお役に立ててよかったです。

とても参考になりました。情報ありがとうございます。

v3.34 で試しました。普通の設定だと問題無く修正されますが、管理画面の [設定 (詳細モード)] > [表示に関する初期設定] > [エントリーの表示順] で [昇順] を選んでいる場合は教えて頂いたコードを追加してもうまくいかないみたいですね。NextMonth が最新月を指すのではなく、PreviousMonth が一番始めにエントリーを記入した月を指すようになりました。。

この状況での回避法は以下の通りです。
# 少なくとも私の環境で問題なく動作しました。
0. mt_db.php に修正コード追加
1. 管理画面の [設定] で [昇順] を [降順] に設定
2. メインページのテンプレートの <MTEntries>にアトリビュート sort_order="ascend" を追加

ブログで表示順を昇順にする事もあまりないと思いますが、ご参考になれば幸いです。

>やまださん
情報ありがとうございます。
エントリーの表示は管理画面の設定は使わず、テンプレートにlastnやsort_orderを書く事でコントロールしていたので、これには気がつきませんでした。
シックス・アパートからいただいたメールにはWheeljackの修正は「ブログの設定で既定の表示数などが変更された場合にも対応している」と書かれてあったのでこのことだったのでしょうかね。

どちらにしろエントリーの表示に関しては、テンプレートタグで設定できることは出来るだけそちらを使うようにした方がよさそうですね。私も気をつけてみようと思います。

☆<MTEntries>が消えていたので出しておきました。半角の<>で囲むと消えてしまうので(^^;、Comments横のアイコンで文字参照に置き換えられるといいです(プレビューで確認できます)。

> <MTEntries>が消えていたので出しておきました。

をを、何も考えずに書いておりました。修正ありがとうございます。(_ _)

>やまださん
はい、これからもよろしくお願い致します。^^

はじめまして。
先日バージョンアップしてから、このバグに悩まされておりました。
おかげ様で解決できました。ありがとうございます。

>ファズ研さん
お役に立ててよかったです。
ダイナミックを使われる人も増えてきているようで私も嬉しいです。

初めまして!本当にどうしようもない素人です。
アーカイブページの分割がしたいのに、どうしてもできません。
再構築オプションを「アーカイブのみダイナミック・パブリッシングで出力します」に設定しました。
再構築時に時間がかからなくなったことだけは確かです。バグも修正させていただきました。ありがとうございました。
こちらの「ダイナミックパブリッシングで分割」と言う項目も読ませていただきましたが、頭が悪いのかうまくいきません。
また落ち着いて頭を冷やしてから、挑戦します。

いらっしゃいませ、*miekoさん。
お役に立てたようでよかったです。
分割に関しては後からメールの方へ返事させていただきますね。よろしくお願い致します。

私もダイナミックパブリッシングを使って
みようと、チャレンジしているのですが、
エラーが出て悩んでいます。

環境は、
IIS6.0 + MT3.34 + MySQL5 + PHP5.2.3
で、マニュアル見て新規インストールしまし
た。

新しく出来上がったページに、1個エントリー
を書いてから、ダイナミックパブリッシング
を有効にしたのですが、ダイナミックで出る
はずのアーカイブリンクを開こうとすると、

「Directory Listing Denied」

「This Virtual Directory does not allow contents to be listed.」

というエラーが出てしまい、内容が見れませ
ん。スタティックに戻して再構築すると、
スタティックとして見れるようになりますが、
ダイナミックにすると、同じエラーとなります。

今回だけ、権限をすべてフルコントロール
などにしてみたのですが、変わらずです。

バージョンも
MT3.34 + PHP4.4.7 + MySQL4 にダウン
させてみたのですが、エラーメッセージは
変わりませんでした。

PHPが動作していないのかと思い、
phpinfo()だけを書いたPHPを読ませてみ
ると、ちゃんと開けているようです。

IISをApacheにしてみるという手もありますが
そこまで元気が・・・

どこか私の設定に問題とかあるのでしょうか?

もんぷちさん、初めまして。
もしかして自宅サーバーの方でしょうか?
ダイナミック・パブリッシングにはmod_rewriteが必要なのですが、それは入っていますでしょうか。

自宅サーバーに関しては詳しくないので、見当違いのことを言っていましたら申し訳ありません。

はじめまして。お返事ありがとうございます。

mod_rewriteを探してみたら、IISの場合は
有料なんですね。

その前に、Apacheで試してみようと思います。

お返事遅れましてすみませんでした。

>もんぷちさん
ダイナミック、上手くいくといいですね。
動くようになったらいろいろカスタマイズなども楽しんで下さいね。

TAEKOさん、はじめまして。

シックスアパートの吉沢さんに教えてもらってここを拝見させてもらっています。今夜は遅いのであきらめて明日修正してみます。

レベルアップがあると新たなバグがでるのがソフトなので、私は3.31を使ってきましたが、サーバーを移行しようと思って3.35を使い始めたら、この問題にぶつかってしまいました。ダイナミックだけでなく、スタティックでも発生しています。

それにしても一年近くも修正されず、サポート打ち切りというのは、これまでの利用者泣かせですね。オープンソース(たとえばWordpress,OpenPNE)だと開発者、運営者、利用者が情報を持ち寄り助け合って数日で解決するのがふつうなんですがね。やはりCAACの時代ですね。

MTは3.31までしか知りませんが、比較的安定して大きな問題にはあわなかったんですが、3.32あたりからおかしくなってきたようですね。私は3.31にもどりました。4.0のゴテゴテ機能は要らないし、一年のサポートのために数万円も出す気はないので、できれば3.35を使い続けるつもりです。

修正を試みたら、結果を報告させていただきます。お世話になるかもしれませんがよろしくお願いいたします。

だるまさん、はじめまして。^^
ここはもう4.0に移行してしまったのですが、3.32~3.35をお使いの方のお役に立てれば嬉しいです。

このバグの修正は4.0でなされているので、バグを承知で3.35を使い続けるか、バグが直った4.0に移るかは考え方次第でしょうね。
非商用の個人サイトなら無償の個人ライセンスが使えますよ。私はずっと無償版でやってきたので、サポートって受けたことがないです(^^;。でもそれで困ったことはないですし、MTならWEBにも情報いっぱいありますし。

私のサイトで何かお役に立てることがありましたら、どんどん利用してみて下さい。
こちらこそよろしくお願いいたします。

Taekoさん、
ありがとうございました。
お教えのとおりに修正したら、文字通り3分で解決しました。感謝、感激です! 悩んでいたことが解消できたときはうれしいものですね。

先のコメントで、吉松さんの名前を間違えて書いてしまいました。ここで訂正してお詫びします。

私は企業内ブログ検討のために個人サイトで無償版を使い出し、複数ユーザの評価も必要なので有償版を購入しました。それ以来、個人サイトで自分の備忘録代わりに使ってきました。最初のころに、何度か質問しましたが、ここ2年はサポートも受ける必要がありませんでした。

正直いってMTにするかWordpressにするかで迷っています。知人たちから何がいいと聞かれることが多いのですが、それぞれ一長一短ですから、自分でもどれがいいのか分からないから答えようがない(笑)

企業内ブログでは数百万円の投資ができるので、MTにしましたが、個人用はそうはいきませんし、それなりのサポートがないと知人には薦められませんよね。

このWingMemoをすこし読ませてもらいました。すごいですね!MTに関してはここを参照させてもらえばほとんど解決すのじゃないかな。使い方についても、Taekoさんの具体的な体験にもとづいて、いろいろ分かりやすく書いてあるのでいいですね。

私は4.0には機能的な魅力を感じないし、個人サイトは親しい友人にURLを教えるくらいで、半分評価が楽しみでやっていますから、しばらくは3.5で十分と思っています。分からないことがあれば、ここにきますのでよろしくお願いします。

あっ そうそう MTというかシックスアパートの対応で刺激されたことをブログに書きますが、批判的な内容ですが、MTは気に入っており好きですので、もし読まれても誤解されないように・・・と言い訳をしておきます(笑)

いま、コメントを投稿しようとPOSTをクリックしたら、
Script Error
The script did not produce proper HTTP headers. Please see the error log to see the detail of the errors. Depending on the server configuration, you can also run thisscript under CGIWrap debugging. Usually, either rename or linkthe script temporarily to a file which ends with .cgidextension, or add a AddHandler cgi-script-debug .cgiline to your .htaccess file.

というメッセージが出ました。ブラウザーで戻ったら、幸い入力した内容は残っていて、再度POSTしたらOKでした。あんまりコメントが長かったり時間が経つとセッション情報が失われるからなのでしょうか。

>だるまさん
解決のお役に立ててよかったです。^^

私がMTを使っているのは、自分のサイトで使うのに必要な機能があるからです。MTのいいところはどんなデザインでも好きなだけ自由に構築できるところですよね。Wordpressにはそこまでの機能がないように思うので…。

あれ、エラー出ましたか? たいがい投稿は出来てるんで気にしないでやって下さい(^^;。
自分の覚え書き用ブログですけど、参考になるところがあれば幸いです。
私で分かることでしたらお答えしますのでよろしくです。

はじめまして。

突然ですが、これは、助かりました・・・
苦労が報われたとはこのことです。

ありがとうございました。

>おおがみさん
こちらこそ初めまして。
今でも3.32~3.35使いの方のお役にたてているようでよかったです。