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
<IfModule mod_dav_fs.c>
<IfModule mod_encoding.c>
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
</IfModule>
</IfModule>
ここまで設定が完了したら、Apacheを再起動します。
Windowsなどクライアントから接続し、ファイル名が日本語のファイルを作成して文字化けしないことを確認出来れば完了です。

この記事へのコメント
まだコメントは投稿されていません。