apache 3つ話。
- cifs マウントしたfilesystemを 公開するとき。
mount -t cifs した,cifs 領域を apache経由でweb公開したところ、どのファイルも 0 byte になってしまう。access_log にはちゃんとファイルサイズ相当を送出したとあるし,error_log にも何もない。けど、client側でpacketみてもファイルは送ってこない。debug modeにしてみたら、Value too large for defined data type: core_output_filter: writing data to the network
とのメッセージ。'EnableSendfile Off' をDirectory directive に書いて何とか解消。
- unix shell 上でのファイル名の日本語文字化け
とりあえず、ファイルがダウンロードできるようになったかと思ったら、文字化けが直らない。まずは、そもそも、cifsでマウントした段階で日本語になって欲しいので、 codepage=...,iocharset=... と試してみたが、ダメ。どうやら、cifsサーバが古い(samba-2.x)なのでsjisでしか返してこないことらしい。ダメじゃん。
- Directory Index
上記ディレクトリではあるが、binaryで帰ってくるのでそのまま apache 経由では charset=Shift_JISで流せば、ブラウザ(http プロトコル)上でちゃんと日本語ファイル名が見える。
いろいろ探したが、IndexOptions Charset=Shift_JIS
と設定してやることで、ブラウザ上でちゃんと charset=Shift_JIS になり、日本語ファイル名が見えた。ダウンロードも可能。'AddDefaultCharset Shift_JIS' だと、htmlファイルにアクセスしたときに、http header が強制的にこのcharsetで送信してしまうようで、meta タグにちゃんとcharsetを書いていても無視されてしまい文字化けしてしまった。
ということで教訓。
- sjisしか返さない古い cifsサーバなんかきらいだ。
- cifs 、nfsでマウントしている領域をapacheで見せるときは EnableSendfile Off (あんまりやりたくないけど)
- indexoptions charset はもし、indexを見せるんだったら必須。
- めんどうでも、さっさと debug モードで詳細ログを見る。
また半日はまってしまった。
コメントする