mod_xsendfile導入に関するメモ

SPONSORED LINK

Pocket

xmod

いきなり技術的なメモですがお許しを。

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から静的な画像ファイルを効率的に出力する方法

ツイッターもやっています!

SPONSORED LINK

  1. No comments yet.

  1. January 6th, 2010