Hello,
ich würde gerne wissen ob (vor allem auf Unix-Systemen) es ein Unterschied ist wenn man mit file_exists oder mit is_readable prüft.
Also konkret: bedeutet es auch gleichzeitig das eine Datei lesbar ist, für den aktuellen Benutzer (PHP), wenn die Funktion file_exists() WAHR zurückgibt?
Oder kann es auch sein, das die Funktion file_exixts() WAHR zurückgibt wenn eine Datei existiert für die der aktuelle Benutzer (PHP) keinerlei Rechte hat (also weder lesen noch schreiben und schon gar nicht ausführen)?Ich kann es selber leider nicht ausprobieren weil ich keinen Unix-Rechner habe.
Jetzt hast Du aber Glück gehabt.
Ich wollte gerade zu meckern ansetzen und sagen: probiers doch aus.
file_exists ist true, wenn der NAME der Datei gelesen werden darf. das ist immer der Fall, wenn das Verzeichnis, in dem sich die Datei befindet, für den User nutzbar (x) ist. Das r-Recht muss weder für die Verzeichnisse noch für die datei selber vorhanden sein.
is_readable() ist true, wenn für die datei das (r)-Recht gesetzt ist und für alle Stufen des Verzeichispfads das (x)-Recht
is_executable() ist true, wenn für alle Stufen des Verzeichispfads das (x)-Recht (zum Finden der Datei) und für die Datei das (x)-Recht (Ausführung) gestzt ist. das (r)-Recht der Datei muss dazu nicht gesetzt sein. Ich bin nun allerdings nicht sicher, welche Dateien dann ausgeführt werden können. Echte Binaries könnten z.B. auch ohne r-Recht ausführbar sein, während Scripte, die ja erst an einen Interpreter übergeben werden müssen, ggf. lesbar sein müssen. Das wäre noch mal zu testen.
Liebe Grüße aus http://www.braunschweig.de
Tom
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen