sayahika

PHP5.6.11でのダイナミックパブリッシング

0

mt5.2.8にてダイナミックMTMLを使ってシステムを構築しております。
今までは、普通に動作していたのですが、昨日から急に
preg_replace():The/e modifier is deprecated,
use preg_replace_callback instead in
といったエラーが出てページが表示できない状況になりました。
確かに、記事が増えて負荷は増えたとは思いますが、テンプレート自体は動いていた時と変更しておりません。サーバー側でライブラリか何かを変えたのかもしれませんが、こちらでphpのバージョンを変更したりはしてません。
いろいろ調べたところ、phpのバージョンは、5.6.11でした。
http://www.m-hand.co.jp/program/913/
http://junnama.alfasado.net/online/2014/07/php55mt.html
の記事に従って、Smarty_Compiler.class.phpを修正してUPしたのですが、上記エラーは解消されたものの、なぜかDynamic部分で使用しているDate関連のタグ(MTEntryDateなど)の部分で、

ページが見つかりません
preg_replace();

といったエラーが表示されて進みません。date関連のタグを取り除けば表示されるのですが、このタグを外すことができません。
その他の記述の部分も修正する必要があるのでしょうか?
もしくは、mt6.0.4にバージョンをあげるしかないのでしょうか?

どなたか、対応方法をご存知でしたら、ご教授ください。

返信(2)

| 返信する
  • >sayahikaさん
    こんにちは。

    こちらで試した限りでは、Movable Typeのインストール先のphp/lib/MTUtil.phpの265行目を以下のように書き換えると動作しました。

    ・書き換え前

    $format = preg_replace('!%(\w)!e', '\$f[\'\1\']', $format);
    

    ・書き換え後

    $format = preg_replace_callback('!%(\w)!', function($m) use ($f) { return $f[$m[1]]; }, $format);
    

    もっとも、Movable Type 5.2.xは9月末でサポート期限が切れて脆弱性対応等が行われなくなりますので、なるべくMovable Type 6にアップグレードすることをお勧めします。

  • 壱さん、こんにちは。
    いつも、返答をありがとうございます!

    おかげさまで、こちらでも動きました!ありがとうございました。

    Movable Type 6へのアップグレードも検討したいと思います。

返信する


カテゴリグループ

フォーラムカテゴリー

21 76

最新のトピック: 公開終了日の取り消し (2013年10月18日 gsk)

233 701

最新のトピック: スコアについて (2015年8月18日 blank)

154 454

最新のトピック: MT6.1 のフォルダ管理について (2015年4月 7日 yokota)

346 1001

最新のトピック: ユーザー登録時のブログ自動作成のURL (2015年8月28日 しょうちゃん)

OpenID対応しています OpenIDについて