W3docs

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 von fopen() 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 $length Bytes gestoppt, auch wenn $data lä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:

  1. Öffne die Datei mit fopen() und wähle einen Modus (siehe unten).
  2. Rufe fputs() so oft wie nötig auf.
  3. 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 handle

Nach 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:

ModusStartet beiDatei abschneiden?Erstellt, wenn nicht vorhanden?
'w'Anfangja (löscht alles)ja
'a'Endeneinja
'x'Anfangn/a (schlägt fehl, wenn Datei existiert)ja
'r+'Anfangneinnein (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 von fwrite() — gleiche Funktion, zwei Namen.
  • Es schreibt in einen offenen Dateizeiger von fopen(), also immer zusammen mit fclose() verwenden.
  • Es gibt die Byte-Anzahl zurück oder false bei einem Fehler — mit === false prü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, siehe fgets() und fread().

Übungen

Übung
Was ist die korrekte Verwendung der Funktion fputs() in PHP?
Was ist die korrekte Verwendung der Funktion fputs() in PHP?
Was this page helpful?