mod_xsendfile導入に関するメモ
- November 25th, 2009
- Posted in 開発ツール・技術
- Write comment

いきなり技術的なメモですがお許しを。
Webサービス作ってファイルをダウンロードさせたい場合、URL直打ちでダウンロードさせたくなかったり、認証後にしかダウンロードさせないようにしたい場合がありますよね。
それらを解決する方法はいくつかあるかと思いますが、mod_xsendfileが便利だと聞いたので導入してみましたよ。かな~り便利。
以下、作業メモです。CentOS+Apacheの場合ね。
■ インストール
さくっとインストールします。
yum -y install httpd-devel wget http://tn123.ath.cx/mod_xsendfile/mod_xsendfile-0.9.tar.gz tar xfz mod_xsendfile-0.9.tar.gz cd mod_xsendfile-0.9 apxs -cia mod_xsendfile.c
■ 設定追加
moduleは自動で入るので一応確認しつつ、/etc/httpd/conf.d/xsendfile.confなんかを作って以下を書き込み。
<IfModule mod_xsendfile.c> XSendFile on XSendFileAllowAbove on </IfModule>
■ Apache再起動
おもむろにApacheを再起動します。
■ テスト
ここではApacheのDocumentRoot以外の場所からのファイルをダウンロードさせてみますよ。
$filename = '/home/myname/goodies/goodone.gif';
header('Content-Length: ' . filesize($filename));
header('Content-Disposition: attachment; filename='.basename($filename));
header('X-Sendfile: '.$filename);
必要に応じて認証処理を加えればいい感じですね。
以上ですかね・・・。ダウンロード処理をさせるようなサービスなら導入を検討してみてもいいかもですね。
ちなみに個人的には「XSendFile on」の記述を忘れていたため、ダウンロードはされるが空のファイル、というみっともないハマリ方をしちゃいましたよ。ご注意あれ。
なお、いつもながら青い人にお世話になりました。また下記サイトも参考にさせていただきました。ありがとうございます。
» anysense-devel PHPから静的な画像ファイルを効率的に出力する方法


No comments yet.