fpassthru
(PHP 4, PHP 5, PHP 7, PHP 8)
fpassthru — Gibt alle verbleibenden Daten eines Dateizeigers aus
Beschreibung
$stream
): intDie Funktion liest alle Daten von der aktuellen Position des Dateizeigers bis EOF aus und schreibt die Daten in den Ausgabepuffer.
Eventuell muss rewind() aufgerufen werden, um den Dateizeiger auf den Beginn der Datei zurückzusetzen, wenn bereits Daten in die Datei geschrieben wurden.
Wenn nur der Inhalt einer Datei in den Ausgabepuffer geschrieben werden soll, ohne diese ändern bzw. an eine bestimmte Stelle zu gehen, sollte besser readfile() benutzt werden, bei der man sich den Aufruf von fopen() ersparen kann.
Parameter-Liste
-
stream
-
Der Zeiger auf eine Datei muss gültig sein und auf eine Datei verweisen, die vorher erfolgreich mit fopen() oder fsockopen() geöffnet (und nicht bereits von fclose() geschlossen) wurde.
Rückgabewerte
Gibt die Anzahl der von stream
gelesenen und zur
Ausgabe weitergeleiteten Zeichen zurück.
Beispiele
Beispiel #1 Nutzung von fpassthru() mit binären Dateien
<?php
// Öffne Datei im binären Modus
$name = './img/ok.png';
$fp = fopen($name, 'rb');
// Schicke passende Header
header("Content-Type: image/png");
header("Content-Length: " . filesize($name));
// Gib Bild aus und stoppe Skript
fpassthru($fp);
exit;
?>
Anmerkungen
Hinweis:
Wenn Sie fpassthru() auf eine binäre Datei unter Windows anwenden, sollten Sie sicherstellen, dass die Datei im Binärmodus geöffnet wurde, indem Sie ein
b
an den Mode-Parameter von fopen() anhängen.Auch wenn es Ihr System nicht verlangt, sollten Sie bei Binärdateien das Flag
b
verwenden, um die Portabilität Ihrer Skripte zu erhöhen.
Siehe auch
- readfile() - Gibt eine Datei aus
- fopen() - Öffnet eine Datei oder URL
- popen() - Öffnet einen Dateizeiger für einen Prozess
- fsockopen() - Stellt eine Internet- oder Unix-Domain-Socket-Verbindung her