• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Die Bildungsoffensive hier im Forum geht weiter! Jetzt sollen Kreativität und technische Möglichkeiten einen neue Dimension erreichen. Das Thema in diesem Monat lautet - Verkehrte Welt - Hier geht es lang --> Klick

PHP Unlink Problem

  • Ersteller Ersteller Applefan88
  • Erstellt am Erstellt am

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.
 
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/'.
 
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
 
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!
 
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

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)
 
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
 
find auch da stimmt was mit den Rechten nicht. Welche CHMOD hat der Ordner den?
 
Na, ich denke Vollzugriff, sonst könnte ich doch keine Dateien darin erstellen oder?
 
Warning: unlink(uploaddir/LF1 Web/)
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?
 
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);
 
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

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);
 
Nein, die habe ich auch schon versucht!

Code:
$userfile = $_FILES['userfile']['name'];
unlink("uploaddir/LF1 Web/" . $userfile);

So funzt es auch nicht!
 
$tschuess_datei = sprintf ("uploaddir/LF1\ Web/%s", addslashes ($_FILES['userfile']['name']));
unlink($tschuess_datei);
funktioniert leider auch nicht kommt wieder permission denied! :angry:
 
(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.)
 
Zuletzt bearbeitet:
Nun lese ich grade im PHP-Manual folgendes...


Heisst das nicht, dass der Name der Datei auf dem Rechner des Nutzers zurueckgegeben wird? Willst Du die Datei aber auf dem Server loeschen, dann musst Du doch den Namen der Datei auf dem Server (hier: "userfile") verwenden. Oder versteh' ich da was falsch?

Stimmt, das sollte so nicht gehen... :D
 
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']);
 
Jetzt lies nochmal ganz genau, was ich zuletzt geschrieben habe...
 
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
 
sollte userfile nicht eine Variable sein... also mit nem $ weil eine Datei die userfile heisst gibts anscheinend nicht ;)
 
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!