#contents --------------------------------- **mbstring無しのPHPでの動作に関して [#oa9802ef] ~PukiWiki1.4からは、PHPがmbstring付きでビルドされていることが前提となっています。しかしながら,RedHat8,9では、標準では mbstringが入っていません。リビルドできる環境なら問題ないですが、レンタルサーバなどで困難な場合に対応して、Jcodeを使用したmbstring互換関数を 7/3版の1.4rc3からサポートするようになっています。(7/5,7/27などにさらにパッチが当たっていますので最新版を使用することをお薦めします。) ***mbstring非対応の場合のエラー [#lcc3fee8] - PukiWiki 1.4.2以降、および 1.3.8(予定)以降では下記のエラーは出力されません。 :| Fatal error: Call to undefined function: mb_internal_encoding() in ..../pukiwiki/init.php on line 17 または Runtime error Error message : Multibyte functions cannot be used. Please read "mbstring.php" for an additional installation procedure. ***注意事項 [#q879524e] - mbstring.php は、TOMOさん作のjcode.php を利用して文字コード変換を行います。そのため、mbtring extension の代わりに使う場合は別途 jcode.php をインストールする必要があります。 -- jcode.phpを別途インストールしていない場合、不完全な結果が返ります(マルチバイトではなくシングルバイト文字として扱われた結果が返ります)。 - EUC-JP専用です。 ***導入手順((本手順は、mbstring.phpにもコメントされています。)) [#qfa83d4b] - PHP SAMPLES & TIPS -- http://www.spencernetwork.org/ - より、jcode_1.34.zip (http://www.spencernetwork.org/jcode/ )を入手してPukiWikiのルートにディレクトリ付きで展開します。 -+--- mbstring.php -r-- +-+- jcode_1.34/ dr-x +--- readme.txt -r-- +--- jcode.phps -r-- +--- jcode_wrapper.php -r-- +--- code_table.ucs2jis -r-- +--- code_table.jis2ucs -r-- - 後はpukiwiki.php内で自動的に判断して必要なら mbstring.phpを読み込みます。 ..... require('auth.php'); require('proxy.php'); if (!extension_loaded('mbstring')) { require('mbstring.php'); } ///////////////////////////////////////////////// // プログラムファイル読み込み ...... *** FAQ [#df12d504] - そのサーバーで mbstring が使えるかどうかを識別するには (普通の方法) -- 任意の名前でphpinfo() 関数を含んだ小さなphpファイルを作り、そのファイルにブラウザからアクセスし、mbstringという文字で検索し、状況をチェックし、そのファイルを消します。 - mbstring が使えるかどうかを識別するには (安直な方法) -- mbstring.php に直接アクセスし、''エラーが表示されないならば''、そのサーバーにはmbstringがあれば定義されているはずの関数がありません。 -- ※部品となるファイルにアクセスするのも、させるのもあまりお行儀が良いことではありませんが・・・ - jcode.php 1.35 (今までは1.34)が同じ出力結果を返すかどうかをRH9にて簡単にテストしました。機能自体に問題はなさそうですが、インストールにあたっては jcode_1.35/jcode_wrapper.php の以下2箇所を修正する必要があります。作者の方は既に認識されています。 -- [[henoheno]] -- require_once dirname(__FILE__).'/jcode.phps'; (phps => sが不要) -- $jc_from = AutoDetect($str) (行末のセミコロンが無い) さらに,mbstring.phpにおいて -- 'jcode_1.34/jcode_wrapper.php'を1.35にしなければならないと思います(line 30,32). *** 参考 [#x706b5d9] -[[RedHat]] -[[質問箱/222]] -[[mbstring]] -[[dev:BugTrack/324]] -[[dev:BugTrack/618]] YukiWiki 1.x と InterWiki "yw" の対応が確認できない -[[dev:開発日記/2003-07-03]] -[[dev:開発日記/2003-07-05]] -[[dev:開発日記/2003-07-12]] -[[dev:開発日記/2003-07-27]]