■WebDAVの日本語対策でmod_encodingを導入すると、他のソフトの日本語環境やPHPやCGIで文字化けが発生する。

[現 象]

この問題は、よく言われる DefaultCharset の問題とは異なり、WebDAV の日本語対策として mod_encoding を導入したときの弊害として発生する有名な問題である。SquirellMail の日本語フォルダが文字化けしたり、CGI の GET Method で取得した文字 ( Namazu の検索入力やおやじが使用している KENT さんの BBS の検索等)が化けてしまったりする問題。
おやじの経験では、デストリによって発生頻度が異なる(SuSEではあらゆる場面で不具合が発生するが、RedHatではCGI系は問題は顕在 化しなかった。)が、Web_DAVの日本語対策としてmod_encodingを導入しているなら、一度、停止してみて本問題かどうか調査すると良い。

[原 因]

本件は、mod_encoding のhook のかけ方のタイミングに問題があるらしいとのこと。 本件は結構有名な話で、おやじのLocationでの対処も以前話題になった話であるが、なぜいつまでも本家で修正が出ないのかな〜?

[対 策]

パッチが公開されているので、試してみる価値はある。おやじが経験した一番問題が出やすいSuSEでは本パッチは有効であった。

   http://www.namazu.org/ml/namazu-win32-users-ja/msg01596.html

上記では、Apache2.x系については言及されていないが、参考にしてパッチで対処した。実際には、APIの違いからApache2.0系と2.2系ではパッチが異なる。mod_encoding をインストールする一連の作業を以下にまとめて置くので参考にしてほしい。全体作業の流れと設定等は、本編を参考にしてほしい。

  1. 事前準備

    mod_encoding は、WebDAV Resources JP の Download からダウンロードできるが、Apache2.0 用はApache1.3 用の mod_encoding.c の差し替えファイルの形で提供されているので、以下の2つのファイルを同じディレクトリにダウンロードする。

    • mod_encoding-20021209.tar.gz
    • mod_encoding.c.apache2.20040616版

    ダウンロードしたmod_encoding-20021209.tar.gz を展開して mod_encoding.c.apache2.20040616版 を mod_encoding.c として差し替える。

    # wget http://webdav.todo.gr.jp/download/mod_encoding-20021209.tar.gz
    # wget http://webdav.todo.gr.jp/download/experimental/mod_encoding.c.apache2.20040616
    # tar zxfv mod_encoding-20021209.tar.gz
    # cp mod_encoding.c.apache2.20040616 mod_encoding-20021209/mod_encoding.c


  2. iconv_hookのインストール

    mod_encoding のインストール前に iconv_hook ライブラリのコンパイルとインストールを行う。

    # cd mod_encoding-20021209/lib
    # ./configure
    # make
    # make install
    # ldconfig


    これで、iconv_hook ライブラリが /usr/local/lib 配下にインストールされるが、そのままでは iconv_hook ライブラリを認識できないので、最後にldconfig でリフレッシュしておく。
    なお、RedHat 系では ld.so.conf (共有ライブラリの場所を書いたファイル)に /usr/local/lib へのリンクが張れていないので、ldconfig は下記のようにld.so.conf に /usr/local/lib を追記してから行うこと。

    # vi /etc/ld.so.conf

    /usr/local/lib

    [Esc]、[:]、[w]、[q]で保存。

    # ldconfig


以上でインストールは完了なので、本編を参考にして設定してください。


Top Pageへ     戻る