「ChaSen, KAKASI による、ページ名の読みの取得機能」が利用できない (Debian woody限定)

  • 以前のタイトル: 4.2.0より前のPHPでエラーが発生する (Debian, mbregexの関数名が異なる)
  • ページ: BugTrack
  • 投稿者: 三浦?
  • 優先順位: 低
  • 状態: 完了
  • カテゴリー: その他
  • 投稿日: 2004-01-15 (木) 19:14:03
  • バージョン: 1.4.1

メッセージ

Debian GNU/Linux 3(woody)のphp4.1.2へmbregex ver1.3.1 のmbregex.soを追加して使用した場合、関数名は mb_ereg()ではなく、mbereg()なので、func.phpでエラーになる。 mb_regex_encoding()も同様。 php 4.2.0以降ならば、問題はない。

したがって、func.phpのpage_list()で、

   $mbregexv = function_exists('mb_regex_encoding');
   ...
   ($mbregexv)?mb_regex_encoding(...):mbregex_encoding();
   ...
   ($mbregexv)?mb_ereg(....):mbereg(...);

といった修正を行うとよい。


  • 埋もれてますのであげておきます。 -- Ratbeta? 2004-07-06 (火) 20:52:07
  • お知らせいただきありがとうございます。これは誤解でなければバックワードコンパチの話題ですよね。であれば「古い関数を呼ぶ」新しい関数を(場合に応じて、init.phpあたりで、自動で)定義する方が、ソースが読み辛くならない上に根本的な対策になりそうです。別の視点で見れば、mbstringエミュレータなどは、このよう古い関数名をあらかじめ定義しちゃうことで優位性を高めるネタにできると。そういう話であっていますでしょうか? (ハズレというか、読み違いです XD ) -- henoheno 2004-07-06 (火) 21:44:59
  • ですので、ご提案の対処法ではないやり方になりそうです。うまい方法を募集します -- henoheno 2004-07-06 (火) 21:46:31

mbregex: マルチバイト対応の正規表現関数ライブラリ

  • 少々確認しました。この問題は 古いPHP および 古いmbregex (mbstring)で、かつ pukiwiki.ini.php にて $pagereading_enable を1にした時、すなわち「ChaSen, KAKASI による、ページ名の読みの取得」機能を有効にしているとき限定の問題の様です。このBugTrackのタイトルを修正します。*1 -- henoheno 2004-07-08 (木) 22:40:52
   function mb_ereg($arg){
           mbereg($arg);
   }
   function mb_regex_encoding($arg){
           mbregex_encoding($arg);
   }
  • このようなラッパーを定義してやれば、ソースをこまごま更新せずともしのげるのではないかと思います。PukiWikiの基本機能にかかわる重大なエラーかと思っていましたが、非常に限定的な問題だとわかってちょっと力が抜けてしまいました・・・ -- henoheno 2004-07-08 (木) 23:28:26

*1 以前タイトルを修正したのも自分なのですが、なぜか今回、たった今まで mbstringとmbregexを読み間違えていた予感が XD

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2007-04-04 (水) 23:36:42
Site admin: PukiWiki Development Team

PukiWiki 1.5.2+ © 2001-2019 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u7. HTML convert time: 0.170 sec.

OSDN