Die gewählte Lösung mod_xsendfile auf dem Centos-Server zu installieren war, es zu konfigurieren und die Dateien mit PHP-Header nach der Benutzerauthentifizierung senden.
Installation von mod_xsendfile auf Centos. Sie müssen EPEL Repository bekommen xsendfile, danach eine einfach aktivieren:
yum update
yum install mod_xsendfile
danach können Sie überprüfen, ob das Modul korrekt mit installiert:
apachectl -M | grep xsendfile
Die Konfiguration/Plesk Teil. Plesk generiert jede httpd.conf-Datei automatisch, so dass die Änderung der Dateien von Hand gefährlich ist, da sie von jeder Änderung, die über die Plesk-Benutzeroberfläche vorgenommen wird, überschrieben werden kann. Standardmäßig sind die http.conf Datei eine vhost.conf und vhost_ssl.conf, für virtuelle Hosts die gespeichert sind in
/var/www/vhosts/system/[yourvhostname]/conf
Sie entweder können sie per ssh bearbeiten oder die Plesk UI-Schnittstelle (vhost -> Servereinstellungen -> zusätzliche Apache-Richtlinien). Für nicht Plesk-Benutzer nur die folgenden Richtlinien unter dem richtigen vHost Abschnitt Ihrer httpd.conf hinzufügen
erste Mal, dass ich der Server einige Probleme hatte verursachen 0 Byte Dateien sendete, nachdem einige Test, den ich die richtigen Richtlinien zu finden sind:
<Directory "/">
EnableSendfile on
XSendFile on
# Absolute path, no trailing slash!
XSendFilePath "/var/www/vhosts/[yourvhostname]/storage"
</Directory>
Hinweis, wenn ich eine andere Directory-Direktive als "/" verwende, bekomme ich leere Dateien und überhaupt keine Fehler in irgendeinem Protokoll. Nicht getestet, was passiert, wenn ein relativer Pfad in den Headern übergeben wird.
return response(null)
->header('Content-Type' , 'application/octet-stream')
->header('Content-Disposition', 'attachment; '.$filename)
->header('X-Sendfile', $fullfilepath);
Hope this jemand Stunden Test vermeiden hilft:
Cause I Laravel als PHP-Framework bin mit, kann die Datei dann mit dem Benutzer gesendet werden.
Im Klar PHP-Header sind einfach Strings, so 'header (‚X-Sendfile:‘. $ Dateipfad); 'wäre was man verwenden möchte. – dothebart