TAMURA Toshihiko
tamur****@bitsc*****
2002年 12月 3日 (火) 10:08:36 JST
阿部さん、こんにちは。 田村です。 jcodeは使ってないんですが、書ける範囲で。 > 海外のヴァーチャルサーバを利用している環境の中で、 > インストールを試みたのですが、以下のようなエラーでちょっと中断しています。 > Fatal error: Failed opening required 'jcode.phps' (include_path='') in > /includes/classes/email.php on line 22 > > https://sourceforge.jp/projects/tep-j/document/INST0001/ja/2/INST0001.txt > にあります、「海外サーバーでの利用 」にしたがって変更を加え、 > spencernetworkからダウンロードした、jcodeをemail.phpと全く同じフォルダーに設 > 置したにもかかわらず、 > require_once('jcode.phps'); > では、パスがとおっていないようです。 email.php 自体も、catalog ディレクトリのスクリプト()からインクルード されていますので、require_once('jcode.phps'); と書くのであれば、 jcode.phps を catalog ディレクトリに置けばインクルードされるのでは? > 質問としては、上記のspencernetworkにあるjcodeは > どのバージョンでもOKなのでしょうか、また、付属でついてくるjcode_wrapper.php > などは無視して、 > 単に、'jcode.phps'だけを設置すればよいものなのでしょうか? どのバージョンでもOKとはいかないと思いますが、 jcode.phps だけを使えばいいんだと思います。 > そして、大橋さんの以下のような記述にあるように、jcode.phpsの一部を修正してか > ら、サーバーにコピーしたのですが > これは正しい方法ですか? > 原因がおわかりの方おりましたら、是非教えてください。 > > (4) 次に mb_substr関数を使っている部分を変更します。 > まず、jcode v1.31 におまけで付属している jsubstr()関数にはタイプミスと > 思われるバグがありますので、修正します。 > > $jstr[] = chr($b[$i], $b[$i+1]); の部分を > $jstr[] = chr($b[$i]).chr($b[$i+1]); に修正します。 それでいいと思います。 ちなみに、jcode 1.34 をダウンロードしてみると、jsubstr()は修正されていて、 一部を取り出すと次のようになっています。 > for ($i = 1; $i <= $m; ++$i) { > if ($b[$i] >= 0x80) { //Japanese > $jstr[] = chr($b[$i]).chr($b[++$i]); > } else { //ASCII > $jstr[] = chr($b[$i]); > } > } $i はループごとにカウントアップされているので、 chr($b[$i]).chr($b[$i+1]) と chr($b[$i]).chr($b[++$i]) は 意味が違ってきますね(他の部分の変更とも関連しているのかもしれません)。 jcode 1.34 をそのまま使ってもいいような... > カタログ内のメーカー名を表示するプルダウンリストの中身が、すっかり文字化けを > 起こしています。 メーカー名全体が化けるんですか? それとも、文字列の末尾が化けるんですか? mb_substr - jsubstr 関連の現象かもしれません。 -- 田村敏彦 / 株式会社ビットスコープ E-mail:tamur****@bitsc***** http://www.bitscope.co.jp/