1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

PHP Unlink Problem

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von Applefan88, 02.09.06.

  1. Applefan88

    Applefan88 Gast

    Hallo, ich habe ein Problem mit einem unlink Befehl.
    Ich habe ein Verzeichnis angelegt und dort lasse ich Dateien hineinladen.
    Nun möchte ich das man in einer Liste, die alle Dateien in dem Verzeichnis anzeigt, die Möglichkeit hat Dateien zu löschen.

    Das alles ist eigentlich schon fertig, nur mit dem unlink Befehl komme ich nicht klar!
    Wie kann ich eine dynamischen Dateinamen aus einem Verzeichnis löschen?

    Hier mein jetziger Versuch:

    Code:
    $userfile = $_FILES['userfile']['name'];
    $pfad = ('uploaddir/LF1 Web/');
    unlink($pfad $userfile);
    
    Kann mir einer sagen, wie ich den Dateinamen dynamisch in den Löschbefehl einfügen kann?
    Also das aus dem uploaddir/LF 1 Web Verzeichnis die Datei $userfile gelöscht wird.
     
  2. Hilarious

    Hilarious Gelbe Schleswiger Reinette

    Dabei seit:
    10.08.05
    Beiträge:
    1.759
    Vielleicht liegt's an der Uhrzeit, ich kapiere aber nicht ganz, was klemmt. Damit das geht, müssen die Rechte des umgebenden Ordner auch den Schreibvorgang zulassen. Falls das gesichert ist, hast Du auch das Datei-Handle gelöscht, bevor Du die Datei löschst?
    Code:
    unset($file_handle);
    unlink($file_handle);
    
    Und: der Ordnername, den Du oben verwendest, enthält ein Leerzeichen, welches Du streng genommen »escapen« müsstest, also statt 'uploaddir/LF1 Web/' müsste es so heißen: 'uploaddir/LF1\ Web/'.
     
  3. Applefan88

    Applefan88 Gast

    Hier mal die Fehlermeldung

    Mhm ja danke, aber ich verstehe auch noch nicht allzu viel von PHP, ich bin gerade am erlernen der Sprache.
    Hier mal die Fehlermeldung:

    Warning: unlink(uploaddir/LF1 Web/) [function.unlink]: Permission denied in C:\Programme\xampp\htdocs\upload\delete.php on line 4
     
  4. Applefan88

    Applefan88 Gast

    Wenn ich direkt die Datei angebe ohne eine Variable zu verwenden, funktioniert es wunderbar!
    Ich verstehe einfach nicht wieso ich mit Variable "Permission Denied" erhalte!
     
  5. Hilarious

    Hilarious Gelbe Schleswiger Reinette

    Dabei seit:
    10.08.05
    Beiträge:
    1.759
    Oha, Windows. Bei Linux/Unix/Mac OS X hätte ich Dir jetzt helfen können. ;) Du musst laut Fehlermeldung sicherstellen, dass der WebServer auch Schreibrechte im Ordner upload hat. Nebenbei: Wenn Dein Script funktioniert, kann man damit dann auch die Datei "delete.php" löschen? :D (nur ein Gedanke)
     
  6. Applefan88

    Applefan88 Gast

    Bei einer direkt festgelegten Datei funzt es!
    Und ich habe Schreibrechte, sonst könnte ich die Dateien ja nicht hineinladen oder?
    Also, ich verstehe nicht wie ich den Befehl unlink so umformen kann, das er eine Variable benutzt!:-c
     
  7. Salzi

    Salzi Prinzenapfel

    Dabei seit:
    29.08.06
    Beiträge:
    555
    find auch da stimmt was mit den Rechten nicht. Welche CHMOD hat der Ordner den?
     
  8. Applefan88

    Applefan88 Gast

    Na, ich denke Vollzugriff, sonst könnte ich doch keine Dateien darin erstellen oder?
     
  9. Peter Maurer

    Peter Maurer Carmeliter-Renette

    Dabei seit:
    16.03.04
    Beiträge:
    3.274
    Du hast nicht zufaellig nur die Anfuehrungszeichen vergessen? Eigentlich muesste es ja ...

    Code:
    unlink("uploaddir/LF1 Web/");
    ... heissen.

    EDIT: Ups, grade sehe ich, dass Du im ersten Posting tatsaechlch Anfuehrungszeichen verwendest. Hast Du mal versucht, die ueberfluessigen Klammern wegzulassen?

    Und ueberhaupt: Was ist der Unterschied zwischen $pfad und $userfile?
     
  10. Salzi

    Salzi Prinzenapfel

    Dabei seit:
    29.08.06
    Beiträge:
    555
    ich mag das unlink mit den 2 Variablen persönlich nicht... versuch mal:


    $userfile = $_FILES['userfile']['name'];
    $pfad = ('uploaddir/LF1 Web/');
    $pfad.=$userfile;
    unlink($pfad);
     
  11. Hilarious

    Hilarious Gelbe Schleswiger Reinette

    Dabei seit:
    10.08.05
    Beiträge:
    1.759
    Durch direkte Aneinanderreihung geht's nicht, wenn das so läuft, wie Du oben geschrieben hast. Möchtest Du in PHP verschiedene Zeichenketten zusammenbringen, bieten sich diverse Wege:
    Code:
    // zum Beispiel mit sprintf():
    
    $tschuess_datei = sprintf ("uploaddir/LF1\ Web/%s", addslashes ($_FILES['userfile']['name']));
    unlink($tschuess_datei);
    
    // oder ganz platt mit einem Punkt:
    $userfile = $_FILES['userfile']['name'];
    $pfad = ('uploaddir/LF1 Web/');
    unlink($pfad.$userfile);
    
     
  12. Applefan88

    Applefan88 Gast

    Nein, die habe ich auch schon versucht!

    Code:
    $userfile = $_FILES['userfile']['name'];
    unlink("uploaddir/LF1 Web/" . $userfile);
    
    So funzt es auch nicht!
     
  13. Applefan88

    Applefan88 Gast

    funktioniert leider auch nicht kommt wieder permission denied! :mad:
     
  14. Peter Maurer

    Peter Maurer Carmeliter-Renette

    Dabei seit:
    16.03.04
    Beiträge:
    3.274
    (Huch. Jetzt hab' ich aus versehen editiert. Hier stand mal ein Loesungsvorschlag, der nicht zum Ziel fuehrte. Die wesentliche Botschaft, dass $_FILES['userfile']['name'] keine Datei auf dem Server bezeichnet, bleibt aber bestehen.)
     
    #14 Peter Maurer, 03.09.06
    Zuletzt bearbeitet: 03.09.06
  15. Hilarious

    Hilarious Gelbe Schleswiger Reinette

    Dabei seit:
    10.08.05
    Beiträge:
    1.759
    Stimmt, das sollte so nicht gehen... :D
     
  16. Applefan88

    Applefan88 Gast

    Das dachte ich auch, ich verwende
    Code:
    $_FILES['userfile']['name']
    und setze es mit einem . dahinter, funktioniert allerdings auch nicht, nun bin ich echt mit meinem Latein am Ende!

    also
    es funktioniert weder
    Code:
    $tschuess_datei = sprintf ("uploaddir/LF1 Web/%s", addslashes ($_FILES['userfile']['name']));
    unlink($tschuess_datei);
    
    noch
    Code:
    [B]$userfile = $_FILES['userfile']['name'];
    $pfad = ('uploaddir/LF1 Web/');
    unlink($pfad.$userfile);[/B]
    und auch nicht das

    Code:
    $userfile = $_FILES['userfile']['name'];
    $pfad = ('uploaddir/LF1 Web/');
    unlink($pfad. $_FILES['userfile']['name']);
     
  17. Peter Maurer

    Peter Maurer Carmeliter-Renette

    Dabei seit:
    16.03.04
    Beiträge:
    3.274
    Jetzt lies nochmal ganz genau, was ich zuletzt geschrieben habe...
     
  18. Applefan88

    Applefan88 Gast

    Gut gemeint, doch das ist das Ergebnis:
    Warning: unlink(uploaddir/LF1 Web/userfile) [function.unlink]: No such file or directory in C:\Programme\xampp\htdocs\upload\delete.php
     
  19. Salzi

    Salzi Prinzenapfel

    Dabei seit:
    29.08.06
    Beiträge:
    555
    sollte userfile nicht eine Variable sein... also mit nem $ weil eine Datei die userfile heisst gibts anscheinend nicht ;)
     
  20. Applefan88

    Applefan88 Gast

    Wollen wir wetten, dass liegt einfach nur an Windows. :-D
    Ich werde morgen einfach das Script auf meinem iBook testen, dann wird es vielleicht gehen!
     

Diese Seite empfehlen