(PHP 4, PHP 5, PHP 7)
readfile — Gibt eine Datei aus
$filename
[, bool $use_include_path
= FALSE
[, resource $context
]] ) : intLiest den Inhalt einer Datei und schreibt ihn in den Ausgabepuffer.
filename
Der Name der Datei, die gelesen werden soll.
use_include_path
Sie können optional den zweiten Parameter benutzen und diesen
auf TRUE
setzen, wenn Sie auch im include_path nach der Datei
suchen möchten.
context
Eine Stream-Kontext resource.
Gibt bei Erfolg die Anzahl der gelesenen Bytes einer Datei zurück.
Im Fehlerfall wird FALSE
zurückgegeben.
Im Fehlerfall wird eine E_WARNING
ausgegeben.
Beispiel #1 Einen Download unter Verwendung von readfile() erzwingen
<?php
$file = 'monkey.gif';
if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($file).'"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
readfile($file);
exit;
}
?>
Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:
Hinweis:
readfile() weist für sich allein keine Speicherprobleme auf, selbst wenn große Dateien gesendet werden. Wenn Sie auf einen out-of-memory Fehler treffen, stellen Sie mit ob_get_level() sicher, dass die Ausgabepufferung deaktiviert ist.
Mit dieser Funktion können Sie eine URL als Dateinamen verwenden, falls Sie fopen wrappers ermöglicht haben. Mehr Details dazu, wie Sie den Dateinamen angeben müssen finden Sie bei fopen(). Eine Liste der unterstützten URL Protokolle, die Fähigkeiten der verschiedenen Wrapper, Hinweise zu deren Verwendung und Informationen zu den eventuell vorhandenen vordefinierten Variablen finden Sie unter Unterstützte Protokolle und Wrapper.
Hinweis: Die Kontext-Unterstützung gibt es seit PHP 5.0.0. Eine Beschreibung von Kontexten finden Sie unter Streams.