Alain: .htpasswd datei schützen,wenn nur gelesen wird?

Beitrag lesen

hallo,

Es kann auch passieren, dass beim gleichzeitigen lesen und schreiben unvorhergesehens auftritt. Wenn ein Script die Datei verändert, während ein anderes noch am lesen ist, würde es mich nicht wundern, wenn das lesende Script plötzlich Mist zurückliefert. (Es kann ja sein, dass oben ein Eintrag rausgelöscht wurde und der Pointer zwischen zwei Lesevorgängen plötzlich nicht mehr da steht, wo man ihn erwartet.)

Um all das zu vermeiden musst du locking implementieren. Und zwar in allen deinen Scripten welche auf die Datei zugreifen. (Stell dir mal vor du wurschtelst unglücklicherweise gerade dann was in der Datei rum, wenn dein Server am lesen ist...)

Ok danke Stefan,für diese Jnfo. Das LOCK_UN muss ich ja nicht verwenden wenn ich LOCK_SH verwende oder? Da gibts noch eine seek funktion,was heisst denn das? Ich habs jetzt so geschrieben:

use Fcntl ':flock'; $Zugriffe = 0; open(DATEN,"<$htpasswd") || &Dead('Cannot open file'); flock(DATEN,LOCK_SH) || &Dead('Locking failed'); while (<DATEN>){  /$username:$crypted/ ? $Zugriffe = $Zugriffe + 1 : $Zugriffe = $Zugriffe;      }

close (DATEN) || &Dead('Cannot close file');

Grüsse vom Alain

--
...nichts ist so schlecht, als daß es nicht für irgend etwas gut wäre