Probleme mit unlink()

Tigerchen

Grünschnabel
Anfrage wg. unlink


Liebe Leute,
ich bin ein PHP-Newbie und habe ein Problem mit dem Löschen
einer Datei. Alle möglichen FAQs habe ich bemüht, aber
keine Lösung gefunden und auch keine Idee mehr,
an was es liegen könnte. Mein Codeschnipsel anbei:

//Interface: WIN2000, Editor: PHP Coder Rel.3; Netzwerk: SUNsparc, OS: Solaris 5.7
//PHP Version: php-4.3.2RC1 auf der SUN
//Rechte für Datei: 0777, Datei ist lokal auf der SUN
//Rechte für alle betroffenen Verzeichnisse: 0777

PHP_______________________________________________
<?
$filename="http://.../test.001";
clearstatcache();
$ul=unlink(trim($filename));
if ($ul==-1){
$u="Yes";
echo "unlinked $filename Y/N: $u<br>";
}
else{
$u="No";
echo "unlinked $filename Y/N: $u<br>";
}
?>
Ende PHP__________________________________________


Quote:____________________________________________

unlinked http://.../test.001 Y/N: No

Ende Quote________________________________________

>>>Die Datei ist und bleibt leider da wo sie ist.
Seufz,
--David
 
Du versuchst, die Datei über's HTTP-Protokoll zu löschen. Sowas ist nicht möglich. Die Datei kann nur lokal mit dem lokalen Pfad oder Remote z.B. über's FTP-Protokoll gelöscht werden.

Hört sich so an, als sei die Datei auf der SUN und soll auch auf der SUN von PHP gelöscht werden. Dann musst du entweder den kompletten Pfad zur Datei angeben oder den Pfad relativ zum aufrufenden Script.

Fluke
 
Hallo Fluke,

vielen Dank für den Hinweis und die schnelle Antwort.

Ich habe den Pfad absolut gesetzt, also

$filename="X:\htdocs\...\test.001";

Funktioniert leider immer noch nicht. Habe aber den
Verdacht, daß ich deine Spur weiterverfolgen sollte.

Danke.
--David
 
soweit ich weiß müssen Backslashes ( \ ) auskommentiert werden, das müsste dann folgendermaßen aussehen:

$filename="X:\\htdocs\\...\\test.001";

weiß aber nicht, obs daran liegt...
 
Lösung für unlink()-Problem gefunden

Die Lösung für mein (Verständnis)problem mailte mir ein Freund. Er schreit zwar ein bißchen, hat aber recht:


"Also: Dein PHP macht kein HTTP sondern erzeugt es!!!!!!! Dateioperationen müssem IMMER mit dem localen Pfad
angegeben werden !!!!!!!!
Z.B. /data/htdocs/.... oder einfach nur test001!
Alles mit X:\\ oder http:... funkt nicht , das war auch das letzte Problem!
Zum Verständnis: Das PHP arbeitet local auf der SUN, wird vom Apache gestartet und gibt den Code
an diesen zurück. Der Pfad X:... ist ein Pfad den nur Dein Clientpc kennt!!! HTTP kennt nur der Browser oder der
Apache. Das PHP kennt nur normale Systemhirarchische Pfade !!!! wie /data/htdocs/test001.blubber!!!
Glaub mir das bitte endlich!

Gruss Pernt"

Dank' Euch,
--David
 
Ne Jung so ist das auch nicht richtig:

du möchtest z.B:

im Root Verzeichniss des Webservers die Datei asdf.txt löschen:

PHP:
$filename = "asdf.txt";    // Dateiname
$pfad = getcwd()."\\";     // getcwd() ermittelt den aktuellen pfad
unlink($pfad.$filename);   // brauch ich ja auch nichts mehr zu sagen.

Gruss

Alexander


PS: Funtzt auf SUN - Linux - Unix udn Windoof
 
Zuletzt bearbeitet von einem Moderator:
igfas: Wozu den aktuellen Pfad auslesen? Eine Dateioperation mit einem Dateinamen ohne weitere Pfadangabe bezieht sich doch sowieso auf den aktuellen Pfad. Dafür ist es ja der aktuelle Pfad.

Oder sollte es Systemarchitekturen geben bei denen das nicht so ist? Würde mich dann doch mal interessieren. :)

Fluke
 
Kommt aber darauf an wo man sich befindet, der script von mir ist halt allgemein Gültig.

Aber wenn man nur Datauen inerhalb des Webserververzeichnisses löschen möchte, hast du natürlich recht.

Gruss

Alexander
 
Zurück