Andreas Lindig: (PHP) Dateirechte unter Linux - ich versteh's einfach nicht

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

--
SELFFORUM - hier werden Sie geholfen,
auch in Fragen zu richtiges Deutsch
  1. Hallo Andreas.

    (...) und die Rechte nach 666 ändere, dann gehts.

    Welche Rechte? Die der Datei, oder des betroffenen Verzeichnisses?

    Gruß, Ashura

    --
    Selfcode: sh:( fo:) ch:? rl:( br:^ n4:& ie:{ mo:) va:) de:> zu:) fl:( ss:| ls:[ js:|
    Try it: Become an Opera Lover in 30 days
    1. 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

      --
      SELFFORUM - hier werden Sie geholfen,
      auch in Fragen zu richtiges Deutsch
  2. 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

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
  3. 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

  4. 你好 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.

    再见,
    克里斯蒂安

    --
    Wenn gewöhnliche Menschen Wissen erlangen, sind sie weise. Wenn Weise Einsicht erlangen, sind sie gewöhlnliche Menschen.
    1. 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

      --
      SELFFORUM - hier werden Sie geholfen,
      auch in Fragen zu richtiges Deutsch
      1. 你好 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).

        再见,
        克里斯蒂安

        --
        Sich erinnern bedeutet, aus einer Erfahrung nicht ausreichend gelernt zu haben.