Datei nach Beendung löschen

radarin

Angesehenes Mitglied
Hallo Liste

CODE
<?php unlink($_SERVER['SCRIPT_FILENAME']); ?>



Mit dieser Zeile will ich die Seite die aufgerufene Seite nach deren Ausführung löschen, bekomme aber diese Meldung:

Warning: unlink(/var/www/darin.ch/www/glossar/test.php): Permission denied in /var/www/darin.ch/www/glossar/test.php on line 256

Keine Berechtigung? Liegt das am CHMOD? Oder an den Rechten den der Webuser vom Admin hat (auf welche sonst niemand einfluss nehmen kann)?

Ich möchte ein Installationsscript automatisch löschen, anstatt dem User zu sagen, mach es jetzt selber.

Bleibt mir nur die Möglichkeit auf der Indexseite der Applikation zu testen ob das Installationsscript noch vorhanden ist und dann die Funktion zu sperren, damit ich sicher bin dass der User die Datei löscht?
 
Mal so als Frage, welche Rechte sind auf der Datei?

Hast Du vielleicht schon mal überlegt, dass es etwas schwierig sein kann eine gerade ausgeführte Datei zu löschen? Es ist in etwa so, als wenn man ein Programm löschen möchte, während es ausgeführt wird.



MfG Sascha Ahlers
 
Daran hab ich auch schon gedacht. Habe deshalb nach dem Löschbefeht direkt ein exit() gesetzt, nützt aber auch nix. Die Rechte habe ich auf 777 gesetzt...

Nachtrag:
Habe eine andere Datei erstellt die ich mit einem META-REFRESH aufrufe um erstere Datei zu löschen. Geht auch nicht. Muss wohl irgendwas mit den Rechten zu tun haben.
 
Hi radarin,

Also so wie ich das verstehe, willst du dein Installationsscript löschen, gleich nach dem es ausgeführt wurde.
Wenn das so ist, dann müsste das eigentlich mit deiner Meta-refresh-Variante möglich sein, wenn da die Rechte nicht wären. Ich nehme mal an, dein Script wird per FTP oder per Serverdamin-Tool hochgeladen, also nicht per Fileupload über PHP. Wenn das so ist, dann hat nur der User Schreibrechte für das File, der es auch hochgeladen hat, und das ist in diesem Fall ja nicht PHP. Darum kannst du das File im Nachhinein auch nicht per unlink() löschen.
Soweit ich das beurteilen kann, müsste dein Kunde dann manuell die Rechte des Files ändern, damit es dann später automatisch gelöscht werden kann. Sowas ist natürlich absolut sinnlos.
Darum rate ich dir, dass der Kunde oder allg. der Anwender das File manuell löschen soll, ausser es gibt eine andere Möglichkeit, irgendwie die Rechte der Datei zu ändern ...

Gruss,

Stefan B.
 
Wenn das File test.php 777 hat und du kannst es nicht löschen, dann gibt es 2 Möglichkeiten:
1. Das File is immer noch in use (ein anderer Prozess oder eine andere Instanz). Mit "top" testen.
2. Der löschende Prozess hat keine Rechte (Gib deinem löschnden Prozess einmal UID=root und GID=root. Mach das aber nur im Sandkasten).

Cheers, René
 
Die Files werden per FTP hochgeladen, und so soll sie der User auch selber wieder löschen, das ist das Einfachste. Und um ihn dazu zu 'zwingen', werde ich in der eigentlichen Applikation das Vorhandensein der Dateien überprüfen und solange die Funktion sperren. So machen es Andere auch, wohl nicht ohne Grund.

Danke für Eure Antworten
 
Zurück
Oben