PHP stream PDF-Datei mit fread und readfile produzieren eine beschädigte pdf
Hallo Leute ich habe ein problem-streaming-PDF-Dateien mit php, ich bin mit diesem code:
if(file_exists($path))
{
//octet-stream
header("Content-Length: " . filesize ( $path ) );
header("Content-type: application/octet-stream");
header("Content-disposition: attachment; filename=".basename($path));
readfile($path);
}
Dies ist meine Ordnerstruktur (so dass Sie verstehen können, wo das PDF gespeichert werden):
Parent/
verify.php
auth/
pdf/
login.php
Wenn ich den stream des pdf aus verify.php funktioniert alles wie vorgesehen... aber wenn ich den stream ein und DIESELBE PDF-Datei aus login.php sind Sie beschädigt (beschädigt).
Hier mein Pfad definition in login.php
$path = "pdf/" . $filename . "_print.pdf";
Und hier mein Pfad definition in verify.php
$path = "auth/pdf/" . $filename . "_print.pdf";
Obviosly Pfad-definition ist vor che stream-code.
Die Durchschnittliche dimension der pdf-Dateien sind bis zu 50Kb.
Die Datei existiert, weil der pass, wenn check-aber ich habe keine Ahnung, warum an einem Ort ist ok und die andere ist beschädigt. (ich habe die Datei in das Verzeichnis, in Ordnung sind).
Sorry für mein schlechtes Englisch und vielen Dank im Voraus.
Du musst angemeldet sein, um einen Kommentar abzugeben.
ich das Problem Bearbeiten wird der code wie folgt:
Den Pfad funktioniert in beide Richtungen: relative oder absolute.
Dank an:
readfile funktioniert nicht richtig
Ihre aktuellen arbeiten derictory nicht ändern, abhängig von Ihrer enthalten Skript Pfad. Also, wenn
/var/www/parent/auth/login.php
wird von/var/www/parent/index.php
working directory bleiben/var/www/parent
.Die beliebte Möglichkeit, damit umzugehen, ist die Definition einer
define('BASEPATH', dirname(__FILE__));
(BASEPATH='/var/www/parent') Konstante in Ihrem Haupt-Datei, und verwenden Sie es überall:$path = "/home/eldblz/www/auth/pdf/" . $filename . "_print.pdf";
("Eltern" war nur ein Beispiel Zweck) Das Skript übergeben Sie die file_exists überprüfen Rendern der Datei, aber es ist beschädigt. Danke trotzdem für deine freundliche Antwort.verify
undlogin
Skripte, und herausfinden, wo das problem ist.