Daniel: UNLINK unlinkt nicht!

Hallo zusammen

Die PHP-Unlink Funktion hat mich gestern beinahe an den Rand der Verzweiflung gebracht. In einem Script habe ich diese Funktion eingesetzt. Bei einigen Dateien kommt jedoch immer die Fehlermeldung "Permission denied in...". Bei anderen Dateien IM SELBEN Ordner klappts! Ich habe es auch mit relativen und absoluten Pfadangaben versucht. Ich bin nicht dahinter gekommen, warum es bei den einen Dateien klappt und bei anderen nicht und ich kann auch keine (Un-)Regelmässigkeiten feststellen. (Ich kann z.B. nicht sagen dass htm-Dateien gelöscht werden können und Bilder nicht)

Woran kann das nur liegen?

PS: Nutze IIS 5.1 und eine der neusten PHP-Versionen...

  1. Hallo Selferaußen,

    ... immer die Fehlermeldung "Permission denied in...". Bei anderen Dateien IM SELBEN Ordner klappts! Ich habe es auch mit relativen und absoluten Pfadangaben versucht.

    Um eine Datei löschen zu können, musst Du auf ihr übergeordetes Verzeichnis Schreibrechte haben. Ich nehme an, dass Du Linux benutzt. Dann muss Dein PHP auf das Verzeichnis, in dem die datei liegt, das w-Recht haben.

    Grüße

    Chris (C)

    1. Um eine Datei löschen zu können, musst Du auf ihr übergeordetes Verzeichnis Schreibrechte haben. Ich nehme an, dass Du Linux benutzt.

      Wenn es daran liegen würde so könnte ich gar keine Files löschen, das ist aber nicht so! Linux? Dann würde ich wohl kaum IIS einsetzen;-)

      1. Um eine Datei löschen zu können, musst Du auf ihr übergeordetes Verzeichnis Schreibrechte haben. Ich nehme an, dass Du Linux benutzt.

        Wenn es daran liegen würde so könnte ich gar keine Files löschen, das ist aber nicht so! Linux? Dann würde ich wohl kaum IIS einsetzen;-)

        Oh, Entschuldigung. Habe ich übersehen.
        Dann hast Du die Fileattribute auch zu beachten. Die werden ja bei genauerem Hinsehen (Details) auch in rwx abgebildet. Wer ist denn als Owner der Dateien eingetragen? Wenn Du nämlich genau die Dateien löschen kannst, die Du auch mit Hilfe des PHP-Runtime angelegt hast, und gerade die NICHT löschen kannst, die du auf andere Weise produziert hast, ist das ein Owner-Problem.

        Grüße

        Chris (C)

        1. » Oh, Entschuldigung. Habe ich übersehen.

          Kein Problem

          Dann hast Du die Fileattribute auch zu beachten. Die werden ja bei genauerem Hinsehen (Details) auch in rwx abgebildet. Wer ist denn als Owner der Dateien eingetragen? Wenn Du nämlich genau die Dateien löschen kannst, die Du auch mit Hilfe des PHP-Runtime angelegt hast, und gerade die NICHT löschen kannst, die du auf andere Weise produziert hast, ist das ein Owner-Problem.

          Da könnte tatsächlich was dran sein! Ich habe nämlich noch ein Script mit welchem ich Dateien uploade. Wie finde ich nun die Fileattribute heraus? Was empfiehlst du mir? Existiert dieses Problem auch auf einem Apache-Server oder ist das Windows bedingt?

          Gruss Daniel

          1. hi,

            Existiert dieses Problem auch auf einem Apache-Server oder ist das Windows bedingt?

            es gibt den apachen sowohl für linux als auch für windows, sowie einige andere OS - in so fern ist diese frage sinnlos.

            unter linux mit seinem rechte-konzept wirst du dem "problem" allerdings idR öfter begegnen als in einer windows-umgebung, da windows' rechtesystem m.e. spärlicher ausfällt als das von linux.

            gruss,
            wahsaga

            1. Hallo,

              unter linux mit seinem rechte-konzept wirst du dem "problem" allerdings idR öfter begegnen als in einer windows-umgebung, da windows' rechtesystem m.e. spärlicher ausfällt als das von linux.

              Ganz das Gegenteil ist der Fall. Nur das "execute-Recht" für Programme ist bei Windows nahezu sinnlos.

              In PHP gibt es eine Status-Abfrage für die Dateieigenschaften.
              ------------------------------
              stat
              (PHP 3, PHP 4 )

              stat --  Liefert diverse Informationen über eine Datei
              Beschreibung
              array stat ( string filename)

              Sammelt Informationen über eine Datei spezifiziert in filename.

              Gibt einen Array mit folgenden statistischen Informationen als Array- Elemente zurück:

              Laufwerk

              inode

              inode protection mode

              Anzahl der Links

              Benutzer ID des Inhabers

              Gruppen ID des Inhabers

              Laufwerkstyp wenn Inode-Laufwerk *

              Größe in Bytes

              Zeitpunkt des letzten Zugriffs

              Zeitpunkt der letzten Modifizierung

              Zeitpunkt der letzten Änderung

              Blockgröße für das Dateisystem I/O *

              Anzahl der zugewiesenen Blöcke

              * - nur gültig auf Systemen, die st_blksize unterstützen. Andere Systeme (z.B. Windows) geben '-1' zurück.

              Gibt FALSE zurück, wenn ein Fehler auftrat.

              stat() ist nicht für remote Dateien geeignet.

              Das Ergebnis dieses Funktionsaufrufes wird zwischengespeichert. Siehe auch clearstatcache() für weitere Einzelheiten.
              ----------------------------
              Was ähnliches muss es doch für den IIS und VBNet auch geben.

              Die Funktion ist aber sehr teuer. Man sollte Sie also möglichst nicht in allgemeinen aktiven Scripten einsetzen, sonmdern nur zur Kontrolle.

              Grüße

              Chris (C)