'r+' | Zum Lesen und Schreiben geöffnet; platziere Dateizeiger auf Dateianfang. |
Das heißt, du überschreibst die Datei jedes mal, wenn du etwas rein schreibst.
Insbesondere kann es dann zu sehr hässlichen Fehlern kommen:
datei
[src=text]tollerwert ist 1234[/src]
[src=php]$file = fopen('datei', 'r+');
fwrite($file, 'tollerwert ist 34');
fclose($file);[/src]
datei
[src=text]tollerwert ist 3434[/src]
Es werden nur die bytes überschrieben, die auch getroffen werden.
Korrekter wäre daher w+ zu verwenden. Die Datei wird dabei auf die Länge 0 gekürzt.
datei
[src=text]tollerwert ist 1234[/src]
[src=php]$file = fopen('datei', 'w+');
fwrite($file, 'tollerwert ist 34');
fclose($file);[/src]
datei
[src=text]tollerwert ist 34[/src]
Was du aber wahrscheinlich möchtest, ist a+
'a+' | Zum Schreiben und Lesen geöffnet; platziere Dateizeiger auf Dateiende. Existiert die Datei nicht, versuche, diese zu erzeugen. |
datei
[src=text]tollerwert ist 1234[/src]
[src=php]$file = fopen('datei', 'a+');
fwrite($file, PHP_EOL . 'tollerwert ist 34');
fclose($file);[/src]
datei
[src=text]tollerwert ist 1234
tollerwert ist 3434[/src]
rewind ist an der von dir verwendeten Stelle übrigens unnötig:
[src=php]$file = fopen('datei', 'r+'); // der Dateizeiger steht an Position 0 in der Datei datei
rewind($file); // der Dateizeiger wird an Position 0 in der Datei datei gesetzt[/src]
Der Vorschlag von
epiphora gleich file_put_contents zu verwenden ist natürlich unabhängig davon besser, wenn für deinen Anwendungszweck gewollt.