fputs()
Die Funktion fputs() ist eine eingebaute PHP-Funktion, die einen string in eine Datei schreibt.
Was ist die Funktion fputs()?
Die Funktion fputs() schreibt einen string in eine geöffnete Datei. Sie ist das Arbeitspferd zum Speichern von Text auf der Festplatte in PHP: Logs, Exporte, generierte Konfigurationsdateien und so weiter.
Das Wichtigste über fputs() ist, dass sie ein Alias von fwrite() ist — beide Funktionen sind in jeder Hinsicht identisch. PHP behält fputs() bei, weil der Name als "file put string" gelesen werden kann, was Programmierern, die von C kommen, vertraut ist. Neuer Code bevorzugt üblicherweise fwrite(), aber beide verhalten sich gleich, sodass alles unten für beide Namen gilt.
Syntax
fputs(resource $stream, string $data, ?int $length = null): int|false$stream— ein Dateizeiger (eine resource), der vonfopen()zurückgegeben wird. Das ist die geöffnete Datei, in die geschrieben wird, kein Dateiname.$data— der zu schreibende string.$length— optional. Wenn angegeben, wird das Schreiben nach$lengthBytes gestoppt, auch wenn$datalänger ist.
Die Funktion gibt die Anzahl der geschriebenen Bytes zurück oder false bei einem Fehler. Beachte, dass sie 0 zurückgibt (nicht false), wenn nichts zu schreiben ist — verwende daher immer === beim Prüfen auf Fehler.
Verwendung der Funktion fputs()
Das Schreiben in eine Datei folgt immer einem Drei-Schritte-Muster:
- Öffne die Datei mit
fopen()und wähle einen Modus (siehe unten). - Rufe
fputs()so oft wie nötig auf. - Schließe die Datei mit
fclose(), um den Puffer zu leeren und den Handle freizugeben.
<?php
$file = fopen('myfile.txt', 'w'); // open for writing, truncating the file
fputs($file, "Hello, world!\n"); // write a line
fclose($file); // flush + release the handleNach der Ausführung enthält myfile.txt den Inhalt Hello, world! gefolgt von einem Zeilenumbruch. Das \n steht in doppelten Anführungszeichen, sodass PHP es in einen echten Zeilenumbruch umwandelt (ein wörtliches \n in einfachen Anführungszeichen würde buchstäblich geschrieben werden).
Den richtigen fopen()-Modus wählen
Der Modus, den du an fopen() übergibst, bestimmt, wo fputs() schreibt und ob vorhandene Inhalte erhalten bleiben. Dies sind die Modi, die das Schreiben erlauben:
| Modus | Startet bei | Datei abschneiden? | Erstellt, wenn nicht vorhanden? |
|---|---|---|---|
'w' | Anfang | ja (löscht alles) | ja |
'a' | Ende | nein | ja |
'x' | Anfang | n/a (schlägt fehl, wenn Datei existiert) | ja |
'r+' | Anfang | nein | nein (muss existieren) |
Verwende 'w' zum Überschreiben und 'a' (append) zum Hinzufügen zu einem Log, ohne vorhandene Inhalte zu verlieren.
<?php
// Append three lines to a log; each run adds to the end.
$log = fopen('app.log', 'a');
fputs($log, "2026-06-21 user logged in\n");
fputs($log, "2026-06-21 report generated\n");
fclose($log);Die Schreibmenge begrenzen
Das optionale dritte Argument begrenzt die Anzahl der geschriebenen Bytes. Das ist praktisch, wenn du nur ein Präfix eines längeren string benötigst:
<?php
$file = fopen('clip.txt', 'w');
$written = fputs($file, 'Hello, world!', 5); // write only the first 5 bytes
fclose($file);
echo $written; // 5 — the file now contains "Hello"$written ist 5, und clip.txt enthält nur Hello.
Den Rückgabewert immer prüfen
Ein Schreibvorgang kann fehlschlagen — volle Festplatte, schreibgeschützte Datei oder ein geschlossener Handle. Da fputs() legitimerweise 0 zurückgeben kann, teste das Ergebnis mit dem strikten Vergleich === false:
<?php
$file = fopen('out.txt', 'w');
if (fputs($file, 'data') === false) {
echo 'Write failed!';
} else {
echo 'Write succeeded.';
}
fclose($file);Dies gibt Write succeeded. aus und vermeidet den klassischen Fehler, bei dem if (!fputs(...)) einen gültigen 0-Byte-Schreibvorgang fälschlicherweise als Fehler behandelt.
fputs() vs. file_put_contents()
fputs() benötigt einen offenen Handle und ist ideal, wenn du inkrementell schreibst (viele kleine Schreibvorgänge, wie in einer Log-Schleife). Wenn du einfach einen ganzen string auf einmal in eine Datei schreiben möchtest, erledigt file_put_contents() das Öffnen, Schreiben und Schließen in einem einzigen Aufruf:
<?php
// Equivalent one-liner — no fopen()/fclose() needed.
file_put_contents('myfile.txt', "Hello, world!\n");Verwende fputs()/fwrite(), wenn du Kontrolle über den Handle benötigst (Anhängen über viele Aufrufe, partielle Schreibvorgänge); verwende file_put_contents() für einmalige Schreibvorgänge.
Zusammenfassung
fputs()ist ein Alias vonfwrite()— gleiche Funktion, zwei Namen.- Es schreibt in einen offenen Dateizeiger von
fopen(), also immer zusammen mitfclose()verwenden. - Es gibt die Byte-Anzahl zurück oder
falsebei einem Fehler — mit=== falseprüfen. - Wähle
'w'zum Überschreiben und'a'zum Anhängen; ein optionaler Längenparameter begrenzt die geschriebenen Bytes. - Für einen einzigen vollständigen Dateiaufruf bevorzuge
file_put_contents(). Um Daten wieder zu lesen, siehefgets()undfread().