(PHP) Dateirechte unter Linux - ich versteh's einfach nicht
Andreas Lindig
- webserver
0 Ashura0 Tom0 Tobias Kloth
2 Christian Kruse
Hallo Forum,
ich habe ein Script, das legt eine Text-Datei mit der Endung .ser oder .txt an wenn sie nicht vorhanden ist. Das mache ich mit fopen("datei.txt", "w"). Bisher klappte das bei anderen Scripten - jetzt bekomme ich immer ein "failed to open stream: Permission denied". Wenn ich hingegen die gefragte Datei auf den Server kopiere und die Rechte nach 666 ändere, dann gehts. Unter Windows geht alles problemlos, auch das Neuanlegen. Was ist denn da nun zu beachten, damit das Script auf dem Linux-Server die Datei anlegen darf?
Gruß, Andreas
Hallo Andreas.
(...) und die Rechte nach 666 ändere, dann gehts.
Welche Rechte? Die der Datei, oder des betroffenen Verzeichnisses?
Gruß, Ashura
Hi,
(...) und die Rechte nach 666 ändere, dann gehts.
Welche Rechte? Die der Datei, oder des betroffenen Verzeichnisses?
der Datei, die nicht angelegt werden konnte. Sie muß ja auch beschrieben und ausgelesen werden. Und dafür ändere ich die Rechte auf 666. Nach dem kopieren sind sie 644 und das reicht für das lesende Script wohl nicht aus. Ist auch egal, weil das ja nicht das Problem ist, sondern das _anlegen_ einer nicht vorhandenen Datei, was fopen() mit "w" ja eigentlich automatisch macht.
Gruß, Andreas
Hello,
Wer ist denn Eigentümer des Verzeichnisses?
Welcher Hauptgruppe ist das Verzeichnis zugeordnet?
Du (Dein Beauftragter) musst Schreibrechte(w) und Nutzungsrechte(x) im Verzeichnis haben, wenn du die Datei anlegen willst.
Wenn Du sie dann lesen(r) oder beschreiben willst(w), musst Du (oder Dein Beauftragter) auch noch die passenden Rechte auf die Datei selbst haben. Das x-Recht ist hier aber nicht notwendig, wenn Du die Datei nicht an das Execution-System von Linux übergeben willst.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hallo Andreas,
Was ist denn da nun zu beachten, damit das Script auf dem Linux-Server die Datei anlegen darf?
der Apache muss Schreibrechte auf das Verzeichnis haben in der die Datei angelegt werden soll.
Grüße aus Nürnberg
Tobias
你好 Andreas,
ich habe ein Script, das legt eine Text-Datei mit der Endung .ser
oder .txt an wenn sie nicht vorhanden ist. Das mache ich mit
fopen("datei.txt", "w"). Bisher klappte das bei anderen Scripten -
jetzt bekomme ich immer ein "failed to open stream: Permission
denied". Wenn ich hingegen die gefragte Datei auf den Server kopiere
und die Rechte nach 666 ändere, dann gehts. Unter Windows geht
alles problemlos, auch das Neuanlegen. Was ist denn da nun zu beachten,
damit das Script auf dem Linux-Server die Datei anlegen darf?
Ganz einfach wird es, wenn du dir vorstellst, was passiert, wenn
eine Datei angelegt wird. Dazu muss man wissen, dass Verzeichnisse
eine Art "Container" fuer Dateien bilden; es besitzt eine Liste
aller Dateien, die in ihm gespeichert sind. Wenn jetzt eine Datei
angelegt werden soll, muss diese Liste erweitert werden. Dazu muss
schreibend auf das Verzeichnis zugegriffen werden. Du brauchst also,
um eine Datei anzulegen, Schreibrechte auf das Verzeichnis, um die
Liste zu erweitern.
再见,
克里斯蒂安
Hi,
Wenn jetzt eine Datei
angelegt werden soll, muss diese Liste erweitert werden. Dazu muss
schreibend auf das Verzeichnis zugegriffen werden.
das klingt sehr einleuchtend. Nur _wer_ muß denn diese Rechte genau haben - also ist die Datei Besitzer, Gruppe oder Welt für das Verzeichnis? Ich habe das Verzeichnis jetzt mal auf 777 umgestellt und... - es funktioniert :-) Aber in anderen Verzeichnissen funktioniert es auch mit 755. Das kommt mir so willkürlich vor. Obwohl ich nicht wirklich glauben kann, daß der Server mir da eins auswischen will ;-)
Gruß, Andreas
你好 Andreas,
Wenn jetzt eine Datei
angelegt werden soll, muss diese Liste erweitert werden. Dazu muss
schreibend auf das Verzeichnis zugegriffen werden.das klingt sehr einleuchtend. Nur _wer_ muß denn diese Rechte
genau haben - also ist die Datei Besitzer, Gruppe oder Welt für
das Verzeichnis?
Der Benutzer, unter dem der Webserver laeuft. Das musst du halt
pruefen. Und dann musst du gucken, ob er in einer Gruppe mit dir
ist. Ist das der Fall, reichen Schreibrechte fuer die Gruppe. Ansonsten
brauchst du halt Schreibrechte fuer alle (other).
再见,
克里斯蒂安