Hi Matze,
// Datei mit Schreibrechten öffnen und Inhalt löschen $handle = fopen($login_file, "w");
An dieser Stelle öffnest du die Datei und löschst den gesamten Inhalt, du greifst also schreibend auf die Datei zu - aber die Sperre hast du zu diesem Zeitpunkt noch nicht, die holst du dir erst später. Merkst du was?
~~~php
> // Datei auf 0 kürzen
> ftruncate($handle, 0);
ftruncate() ist in deinem Quellcode überflüssig, weil die Datei schon beim Öffnen auf 0 gekürzt wurde. Dies bedeutet allerdings nicht, dass ftruncate() an sich sinnlos ist. Das bedeutet lediglich, dass du die Datei im falschen Modus geöffnet hast.
Zum Einlesen der Datei benutze ich einfach include(), da muss ich nichts sperren oder sonstwas.
Zum Einlesen? Dann überleg dir bitte noch mal, wo für include() gedacht ist. Richtig, nämlich dafür, anderen PHP-Scripte einzubinden und vor allem auszuführen! Und da in deiner XML-Datei ja wohl höchstwahrscheinlich kein PHP-Code ist, bist du hier mit include() schlecht beraten. Die Alternative wäre hier readfile(), aber du willst die XML-Datei doch vermutlich gar nicht einbinden im Sinne von ausgeben, sondern viel eher auslesen, oder?
Viele Grüße,
~ Dennis.