Netzflut

Webdesign, Webentwicklung, Drupal & Zeuchs

Xsendfile

Inhaltsverzeichniss

    Info

    Changes since 0.12, new Etag, modified options .. siehe: http://freecode.com/projects/modxsendfile/releases/323142

    Automatisch

    PAKETQUELLE EINTRAGEN und dann apt-get update.
    http://packages.debian.org/squeeze/amd64/libapache2-mod-xsendfile/download
    ODER
    deb http://ftp.de.debian.org/debian squeeze main 
    UNCOMMENT IF YOU USE THAT OR DESTRY SYSTEM on DL/UPDATES'
    /etc/apt/sources.list <- Paketquellen

    apt-get install libapache2-mod-xsendfile 

    Manuell

    apt-get install apache2-prefork-dev
    // apxs (APache eXtenSion) installieren 
    cd /tmp wget http://tn123.ath.cx/mod_xsendfile/mod_xsendfile.c 
     
    // Quellen holen 
    /usr/bin/apxs2 -cia /tmp/mod_xsendfile.c 
     
    // und installieren Dann die Konfigurationsdatei unter 
    /etc/apache2/mods-available/xsendfile.load erstellen:

    LoadModule xsendfile_module /usr/lib/apache2/modules/mod_xsendfile.so

    <Files *.php>
    XSendFile on
    XSendFileAllowAbove on
    </Files> 

    Apache neustarten

    /etc/init.d/apache2 restart

    und in die PHP-Datei folgende Header einfügen:

    header("X-Sendfile: $somefile");
    header("Content-Type: application/octet-stream");
    header("Content-Disposition: attachment; file=\"$somefile\"");
    exit;

    Wichtig

    Unbedingt in die Apache config adden (innerhalb )

    XSendFile on
    XSendFileAllowAbove on	

    Testen wir

    Php file erzeugen. Beachten das die Dateipfade stimmen und die Datei auch existiert.

    <?php
    $file = "/var/www/web/test.jpg";
    header("X-Sendfile: $file");
    header("Content-type: application/octet-stream");
    header('Content-Disposition: attachment; filename="test.jpg"');
    ?>

    Wenn alles klappt sehen wir:

    ACHTUNG die ZEILE "X-Sendfile..." TAUCHT NICHT AUF, AUS SICHERHEITSGRÜNDEN!!!!!!!!!!!
    Sie taucht auf wenn man die direktiven aus der apache config entfernt (so funktioniert xsendfile allerdings nicht mehr, also nur wenn man
    man den header sehen will machen).

    HTTP/1.1 200 OK Date: Thu, 17 Jun 2010 14:38:52 GMT 
    Server: Apache X-Sendfile: /var/www/web/test.jpg 
    Content-Disposition: attachment; filename="test.jpg" 
    Content-Length: 0 Keep-Alive: timeout=3, max=100 
    Connection: Keep-Alive 
    Content-Type: application/octet-stream 

    File ist 0 bytes

    Xsend ist falsch eingerichtet. Fehlen eventuell die direktiven in der apache config/.htaccess

    Quellen

    INFO:http://codeghar.wordpress.com/2009/12/31/django-apache-and-x-sendfile-in-debian/
    http://www.admin-magazin.de/content/schnellere-downloads-durch-mod-xsendfile-fuer-apache2
    http://www.qc4blog.com/?p=547
    http://www.qc4blog.com/?p=555
    http://codeutopia.net/blog/2009/03/06/sending-files-better-apache-mod_xsendfile-and-php/
    http://www.yiiframework.com/wiki/129/x-sendfile-serve-large-static-files-efficiently-from-web-applications/
    WEBSEITE: http://tn123.ath.cx/mod_xsendfile/