problem mit Ordner löschen über exec()
steffen
- php
Hallo Forumleser,
ich möchte gerne Ordner mit allen unterordnern löschen. Hab dazu die einfachste Methode gesucht und fand das hier:
$directory = escapeshellarg("E:\Objektfotos\Objektfotos".$_GET['id']);
exec("rmdir /s /q $directory");
Nun bringt der Brwoser mir leider den Fehler:
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in E:\Objektfotos\index.php on line 385
Wie muss ich das directory denn angeben? Wenn ich es direkt über die cmd mache, klappt es, wie es soll.
Zu Hülf :(
steffen
Hi,
Nun bringt der Brwoser mir leider den Fehler:
Nicht der Browser, sondern PHP selber natuerlich.
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE,
Was macht ein \ in Strings in PHP?
Riiichtig, es escaped ein eventuell nachfolgendes Sonderzeichen.
Und was haben wir in deinem Fall?
$directory = escapeshellarg("E:\Objektfotos\Objektfotos".$_GET['id']);
^ Stringanfang ^^ *escapetes* Sonderzeichen,
also *kein* Stringbegrenzer
... und damit nichts mehr, was den String beendet.
MfG ChrisB
Hi ChrisB,
$directory = 'E:\Objektfotos\Objektfotos\'.$_GET['id'];
exec("rmdir /s /q ".$directory);
So klappts.
Danke dir :)
Hello,
$directory = 'E:\Objektfotos\Objektfotos\'.$_GET['id'];
exec("rmdir /s /q "".$directory.""");
So klappts.
aber nur solange, bis der Pfad ein Leerzeichen enthält.
Das muss auch noch maskiert werden oder der Path-String durch Häkchen gebunden werden, sonst macht exec ZWEI Argumente daraus und schwupps sind zwei Verzeichnisse verschwunden, die Du eigentlich gar nicht löschen wolltest.
Ein harzliches Glückauf
Tom vom Berg
Lieber steffen,
vielleicht kann Dir meine Dateiverwaltung helfen, Dein Problem direkt online ohne shell zu lösen?
Liebe Grüße aus Ellwangen,
Felix Riesterer.