Datei löschen

Hallo!
Ich werd noch wahnsinnig… wie kann ich denn mit PHP eine Datei löschen? Ich hab natürlich recherchiert, nur unlink($path) funktioniert nicht… hat jemand eine Idee, was ich falsch mache, dass unlink nicht geht? In welcher Form muss ich $path angeben? Muss es ein absoluter pfad sein oder reicht z.B. „…/images/fotos/loeschmich.jpg“ ?

Bei mir schauts momentan so aus:

$dir = „http://www.url.com/ueins/images/“;
$holla = „fotos“;
$auswahl = „loeschmich.jpg“;
if(unlink($dir.$holla."/".$auswahl))
echo „Die Datei $auswahl wurde gelöscht.“;

Wäre für Hilfe sehr dankbar.

Hi

$dir = „http://www.url.com/ueins/images/“;
$holla = „fotos“;
$auswahl = „loeschmich.jpg“;
if(unlink($dir.$holla."/".$auswahl))
echo „Die Datei $auswahl wurde gelöscht.“;

Hast Du es mal OHNE IF versucht, als „nakt“ den Unlink-Befehl???

Es könnte sein, dass Du mit den Zugriffsrechten auf dem Webserver ein Problem hast. Du kannst ja den CHMOD-Befehl über telnet/dein FTP-Client entsprechend ausführen. ODER, falls es sich um Dynamische Inhalte handelt, die der Nutzer hochlädt könntest Du das so schreiben:

$dir = "http://www.url.com/ueins/images/";
$holla = "fotos";
$auswahl = "loeschmich.jpg";
$datei = $dir.$holla."/".$auswahl;
chmod ($datei, 0777);
if(unlink($datei))
 echo "Die Datei $auswahl wurde gelöscht.";

Weiteres:
http://www.selfphp.info/funktionsreferenz/dateisyste…

Es kann aber auch sein, dass die Server-Software, die dein Hoster nutzt einen BUg hat, das ging mir mal so! Da konnte ich auch nix löschen, keinen CHMOD-Befehl ausführen (weder per FTP noch per PHP)!

Hoffe geholfen zu haben!

Liebe Grüße :wink:

Florian

Hallo!
danke erstmal für die Hilfe.

Hi

$dir = „http://www.url.com/ueins/images/“;
$holla = „fotos“;
$auswahl = „loeschmich.jpg“;
if(unlink($dir.$holla."/".$auswahl))
echo „Die Datei $auswahl wurde gelöscht.“;

Hast Du es mal OHNE IF versucht, als „nakt“ den
Unlink-Befehl???

Ich hab unlink auch schon ohne if versucht, leider keine Änderung.

Es könnte sein, dass Du mit den Zugriffsrechten auf dem
Webserver ein Problem hast. Du kannst ja den CHMOD-Befehl über
telnet/dein FTP-Client entsprechend ausführen. ODER, falls es
sich um Dynamische Inhalte handelt, die der Nutzer hochlädt
könntest Du das so schreiben:

$dir = „http://www.url.com/ueins/images/“;
$holla = „fotos“;
$auswahl = „loeschmich.jpg“;
$datei = $dir.$holla."/".$auswahl;
chmod ($datei, 0777);
if(unlink($datei))
echo „Die Datei $auswahl wurde gelöscht.“;

Das hab ich hoffnungsvoll versucht, macht leider auch keinen Unterschied. Das komische ist, dass ich das script ausgeführt und dann via FTP nachgesehen habe, ob die Zugriffsrechte tatsächlich geändert wurden - wurden sie nicht. Die Datei hatte immer noch 755. Hab dann also die Zugriffsrechte manuell geändert, aber auch mit 777 geht unlink leider nicht.

Mir fällt langsam nichts mehr ein, das einzige was mir noch in den Sinn kommt ist, dass der Pfad vielleicht falsch ist bzw. die pfadangabe. Denn wenn ich mit echo $datei den Pfad ausgebe und in die Adresszeile kopiere, kommt das Bild das ich löschen will (was meine art ist, absolut idiotensicher zu überprüfen, ob der Pfad stimmt). Muss ich das doch anders angeben?

Grüße,
Chi

Moin!

danke erstmal für die Hilfe.

Hat ja (noch) nicht geholfen :wink:

Das hab ich hoffnungsvoll versucht, macht leider auch keinen
Unterschied. Das komische ist, dass ich das script ausgeführt
und dann via FTP nachgesehen habe, ob die Zugriffsrechte
tatsächlich geändert wurden - wurden sie nicht. Die Datei
hatte immer noch 755. Hab dann also die Zugriffsrechte manuell
geändert, aber auch mit 777 geht unlink leider nicht.

Da würde ich mal mit dem Provider reden! Da kann was nicht stimmen!

Die einzige Option bgzl. des Pfads wäre folgendes:
(Wir nehmen an, das PHP-Skript liegt in "http://www.url.com/ueins/")

$dir = "images/fotos";
$auswahl = "loeschmich.jpg";
$datei = $dir."/".$auswahl;
chmod ($datei, 0777);
if(unlink($datei))
 echo "Die Datei $auswahl wurde gelöscht.";

Ich mache das meist so/so ähnlich…klappt imma!

LG

Florian

Okay, ich bin ein Depp. Jetzt funktioniert es. Ich hab 2 Sachen geändert und offenbar lag’s an beiden. Erstens hab ich wie du mir geraten hast die Pfadangabe geändert… sagen wir das Script liegt im Ordner www.url.com/uzwei/ und die Datei die ich löschen will in www.url.com/ueins/images/fotos/ Ich hab jetzt

$dir = „…/images/fotos/“;

und damit klappt es (mit http://www.url.com/ueins/images/fotos komischerweise nicht… kapier ich nicht). Zweites Problem war, dass zwar die Datei, nicht aber der Ordner Fotos die entsprechenden CHMOD Rechte hatte… als ich den Ordner auf CHMOD 777 umgestellt hatte, gings dann…

Danke sehr!

Chi

Die einzige Option bgzl. des Pfads wäre folgendes:
(Wir nehmen an, das PHP-Skript liegt in
"http://www.url.com/ueins/")

$dir = „images/fotos“;
$auswahl = „loeschmich.jpg“;
$datei = $dir."/".$auswahl;
chmod ($datei, 0777);
if(unlink($datei))
echo „Die Datei $auswahl wurde gelöscht.“;

Ich mache das meist so/so ähnlich…klappt imma!

LG

Florian

hallo,

hast du einen windows oder einen unix / linux webserver ?
Welche Rechte hat das php Script was die datei löschen soll?

Gruß
Phillip

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

und damit klappt es (mit http://www.url.com/ueins/images/fotos
komischerweise nicht… kapier ich nicht).

ist ja wohl logisch…
Der Webserver weiss ja nicht, dass er url.com heisst…
das weiss nur der Domain Name Server - DNS.
Ergo sagt der Server A zum DNS, dass der DNS dem Server B (der in dem Fall Server A ist) dass er eine Datei löschen soll…
Und der antwortet dann
„spinnst Du, dass soll mir der schon selbst sagen und dann schau ich nach, ob der das überhaupt darf“
Darf er nämlich nicht, sonst wäre es leicht mal eben den inhalt auf windows.de zu löschen :smile: