Paramétrer XSendFile avec Vesta

  • { Mis à jour le 18-11-2019 à 8:34 }
  • { Publié le : 18-11-2019 (SelMaK) }
  • { Serveur }
Suite à la mise à jour majeur d'un site client, le système de téléchargement de fichier a changé. Il utilise dorénavant le module XSendFile pour Apache. Voici comment installer un système de téléchargement sécurise sur Debian avec Vesta CP

Commencez par installer le module pour Apache via SSH

sudo apt-get install libapache2-mod-xsendfile

Il faut maintenant modifier votre virtualhost afin de pouvoir utiliser ce module
Rendez-vous dans le dossier des virtualhosts de VestaCP

cd /home/admin/conf/web

Afin de lister tous les virtualhosts, tapez la commande

ls

Choisissez maintenant le nom de domaine qui utilisera XSendFile (pour l'exemple : divrezstudio.local.apache2.conf)

Repérez les lignes

<Directory /home/admin/web/divrezstudio.local/public_html/public>
        AllowOverride All
        Options +Includes -Indexes +ExecCGI
        php_admin_value open_basedir /home/admin/web/divrezstudio.local/public_html:/home/admin/tmp
        php_admin_value upload_tmp_dir /home/admin/tmp
        php_admin_value session.save_path /home/admin/tmp
</Directory>

Juste en dessous de la dernière ligne php_admin_value, ajoutez

XSendFile On
XSendFilePath *chemin absolu vers votre dossier de téléchargement*

Bien entendu, modifiez selon votre dossier de téléchargement (chemin absolue) Enregistrez les modification puis rechargez Apache2

service apache2 reload

BONUS :

Pour utiliser XSendFile avec PHP

$chemin = "/var/www/monsite/downloads/myfile.txt";  
header('Content-Type: application/octet-stream');
header('Content-Transfer-Encoding: Binary');
header('Content-Disposition: attachment; filename="'. basename($chemin).'"');
header('X-Sendfile: ' . $chemin);