WEBサービス創造記

WEBサービスを作ったり保守したりしてる人のメモブログです。

WebDAVでの日本語ファイル名が文字化けする問題をmod_encodingで解消

      2012/12/09

mod_encodingのインストール

WebDAVは非常に便利なんですが、日本語のファイル名が文字化けするという問題がよく発生します。
いろいろ他サイト調べてみましたが、mod_encodingというモジュールをApacheに追加することで、日本語のファイル名が文字化けする問題を解消できるようです。

mod_encodingは以下のような手順でインストールします。
この記事ではCentOS5.6・Apache2.2で動作確認をとりましたが、ディストリビューションやApacheのバージョンが異なる場合は、パスなどの調整が別途必要になると思いますのでご注意ください。また、作業はrootのホームディレクトリ”/root”で行いました。

mod_encodingとパッチのダウンロード

# cd ~

まずは、下記URLからmod_encoding本体をダウンロードして、サーバにアップしておきます。
mod_encoding-20021209.tar.gz

続いてmod_encodingのパッチもダウンロードします。

# wget http://iij.dl.sourceforge.jp/webdav/13905/mod_encoding.c.apache2.20040616
# wget http://www.aconus.com/~oyaji/faq/mod_encoding.c-apache2.2-20060520.patch

パッチの適用

# tar zxf mod_encoding-20021209.tar.gz
# cd mod_encoding-20021209/
# ./configure --with-apxs=/usr/sbin/apxs    ※apxsのパスはディストリビューションによって違うので注意
# cp ../mod_encoding.c.apache2.20040616 mod_encoding.c
# patch -p0 < ../mod_encoding.c-apache2.2-20060520.patch

ここでの注意点は、apxsのパスはディストリビューションによって異なるという点です。
下記コマンドでapxsのパスを確認することができます。

# updatedb
# locate apxs
/usr/sbin/apxs

上記コマンドでapxsのパスが出力されない場合は、apxsがインストールされていない可能性があります。
yumで、apxsを含んだhttpd-develをインストールして再度上記コマンドを実行すると解決できる場合があります。

# yum -y install httpd-devel

iconv_hookライブラリ導入

# cd lib
# ./configure
# make
# make install

また、iconv_hookのパスを通しておかないと、Apacheの起動時に"Cannot load /etc/httpd/modules/mod_encoding.so into server: libiconv_hook.so.1: cannot open shared object file: No such file or directory"というエラーメッセージがでて起動に失敗することなるので、共有ライブラリの場所を書いたファイル)に/usr/local/libを追記して対応します。

# vi /etc/ld.so.conf
以下を追記
/usr/local/lib

# ldconfig    設定を反映

mod_encoding導入

# cd ../
# make
# gcc -shared -o mod_encoding.so mod_encoding.o -Wc,-Wall -L/usr/local/lib -Llib -liconv_hook
# sudo make install

Apache設定ファイル編集

ここではWebDAVを利用するときだけmod_encodingを有効するように設定します。

# vi /etc/httpd/conf.d/webdav.conf
以下を追記
LoadModule encoding_module   modules/mod_encoding.so


    
        EncodingEngine        on
        SetServerEncoding     UTF-8
        DefaultClientEncoding UTF-8 CP932 EUCJP-MS

        AddClientEncoding "Microsoft .* DAV 1.1" ASCII CP932 UTF-8
        AddClientEncoding "Microsoft .* DAV" UTF-8 CP932
        AddClientEncoding "(Microsoft .* DAV $)" UTF-8 CP932
        AddClientEncoding "(Microsoft .* DAV 1.1)" CP932 UTF-8
        AddClientEncoding "Microsoft-WebDAV*" UTF-8 CP932
        AddClientEncoding "RMA/*" CP932
        AddClientEncoding "xdwin9x/" CP932
        AddClientEncoding "cadaver/" UTF-8 EUCJP-MS
        AddClientEncoding "Mozilla/" EUCJP-MS
    

___EOD___;
echo htmlspecialchars($codeBlock);
?>

ここまで設定が完了したら、Apacheを再起動します。
Windowsなどクライアントから接続し、ファイル名が日本語のファイルを作成して文字化けしないことを確認出来れば完了です。

 - WEBサーバ構築 , , , , ,