XSendfile funktioniert nicht - PHP, Apache, Cpanel

Wurde ich empfehlen die Verwendung von XSendfile-da bedienen wir ziemlich große Dateien von unserem server. Der server läuft Cpanel. Früher waren wir eine Reine Kraft-download-Skript, was auch nicht gut funktioniert in einigen Browsern. In der Hoffnung, zu töten zwei Vögel mit einem Stein mit XSendfile.

OK so, unser host aktiviert hat Xsendfile auf unserem server. Ich schrieb einen quick-test-script:

$file = "/home/deli/central/testfile.doc";
header("X-Sendfile: $file");
header("Content-type: application/octet-stream");
header('Content-Disposition: attachment; filename="' . basename($file) . '"');
exit;

Wenn ich diesen starte, bekomme ich die download-Aufforderung. Aber die Datei, die gesendet wird, ist immer 0kb.

Ein wenig Forschung, scheint Sie brauchen, um verschiedene Dinge, die entweder in der apache-config-Datei, oder eine htaccess-Datei. Mir wurde auch gesagt, dass es nicht eine gute Idee, um Sie in die apache-config, sonst kann es bekommen bei einer Aktualisierung überschrieben werden. Ich würde lieber tun es in der htaccess ayway, da ich keinen direkten Zugriff auf die apache-config und ich hätte lieber die Kontrolle, dass es mit htaccess sollte.

WENN ich es bekommen kann, zu arbeiten, natürlich.

So, ich habe den folgenden, um eine htaccess-Datei:

XSendFile on
XSendFilePath /home/deli/zentrale
XSendFileAllowAbove Auf

(Den relativen Pfad vom script aus auf den zentralen Datei-Verzeichnis ist ../../deli/zentrale)

Wenn ich das hinzufügen dieser Zeilen in der htaccess, und legen Sie es in den "public_html" - Verzeichnis (im selben Verzeichnis wie der test-script), wenn ich dann die test-script bekomme ich einen 500 Fehler. Kurzer Blick auf die error-logs zeigt:

/home/Norden/public_html/.htaccess: XSendFilePath hier nicht erlaubt

Könnte jemand mich aufklären, wie um alles, was ich tun könnte falsch?

ps - ich habe gerade gelesen, dass es viel effizienter ist es in der apache-config, damit der server nicht mit kriechen durch und laden alle htaccess-Dateien. Weiß nicht, ob dies wahr ist oder nicht.

Hilfe wird sehr geschätzt, das ist ein bisschen ein showstopper auf das Projekt 🙂

ps ich vergaß zu erwähnen - wenn ich in einer geraden force-download in den script, mit dem gleichen $Datei Pfad, Datei-downloads einfach Prima. So würde der Pfad scheint korrekt zu sein.

  • Sie versuchen, zu dienen Dateien von /home/deli/... aber Ihre .htaccess Datei in einem anderen Pfad /home/north/.... Sind Sie sicher, dass der richtige Benutzer (läuft der Apache-Prozess) hat Zugriff auf die /home/deli Weg?
Schreibe einen Kommentar