日本語名ファイル添付とmod_encoding
G's BBSで画像添付のテストをしてるときに、日本語のファイル名の画像ファイルをアップロードしたら、
きちんとEUCにエンコードされたファイル名で格納され、生成されたHTMLでもEUCできちんとしたファイル名に
なっていたにもかからわず、ページ上にはうまく画像が表示されなかった。
そういえば、Apache1.3の時に日本語ファイル名をWebDAV等で扱うときにmod_encodingというモジュールが
必要だったのを思い出して、Apache2にも導入して設定してみた。
WebDAV Resources JPのDownload PageにApache2対応のmod_encodingがあった。
但し、色んなバージョンがあって、どれがよいのかの判別が付かなかったので、とりあえず、
Redhat 7.3用i386 RPMパッケージを入手して導入してみた。もちろん現在のサーバー環境のApache2は
RedhatのApache2のrpmとは導入されるディレクトリが異なり、このRPMパッケージでも、/usr/lib/httpd/modules下に
導入するので、モジュールファイル(mod_encoding.so)を現在のApache2もモジュールディレクトリに移動して、
httpd.confも移動してやる必要があった。
httpd.confに追加した行
LoadModule encoding_module modules/mod_encoding.so
EncodingEngine on
SetServerEncoding EUC-JP
DefaultClientEncoding UTF-8 MSSJIS EUC-JP
AddClientEncoding "Microsoft .* DAV 1.1" ASCII MSSJIS UTF-8
AddClientEncoding "Microsoft .* DAV" UTF-8 MSSJIS
AddClientEncoding "(Microsoft .* DAV $)" UTF-8 MSSJIS
AddClientEncoding "(Microsoft .* DAV 1.1)" MSSJIS UTF-8
AddClientEncoding "Microsoft-WebDAV*" UTF-8 MSSJIS
AddClientEncoding "RMA/*" MSSJIS
AddClientEncoding "xdwin9x/" MSSJIS
AddClientEncoding "cadaver/" UTF-8 EUC-JP
AddClientEncoding "Mozilla/" EUC-JP
あと、大きなファイルを添付すると、PHPのメモリー不足のエラーが出たので、php.ini
で、
memory_limit = 8M ; Maximum amount of memory a script may consume (8MB)
から
memory_limit = 16M ; Maximum amount of memory a script may consume (8MB)
に変更してやった。
コメント