• Hi Leute,

    bei mir haben Mitglieder die Möglichkeit Bilder hochzuladen, als Avatar.
    Das klappt unfallfrei, allerdings wenn ein neuer Avatar hochgeladen wird möchte ich den Alten löschen, damit sich nicht soviel Datenmüll ansammelt.

    Das möchte ich mit unlink() machen. Dazu habe ich mir folgende Datei geschrieben: unlink.php

    PHP
    <?php
    if(isset($altesfoto))
    {
    unlink("$altesfoto");
    }
    ?>

    Diese Datei liegt im gleichen Verzeichniss wie die Bilder, die gelöscht werden sollen. Dann habe ich diese Datei per include in meine andere Seite eingebunden, wo dann das löschen veranlasst wird. Wenn diese andere Seite aufgerufen wird ist entweder die Variable $altesfoto durch die uri gesetzt oder nicht. Das funkt soweit ganz gut aber jetzt kommt die Fehlermeldung:

    Code
    Warning: unlink(banger.gif) [function.unlink]: No such file or directory in C:\Programme\Apache Group\Apache2\htdocs\ehemalige\images\profiles\unlink.inc.php on line 4

    Die funktion "unlink(banger.gif)" ist eigentlich richtig, d.h. der Name ist korrekt. Liegt das daran, daß ich die unlink.php mit include eingebundenn habe und dann die unlink.php sozusagen nicht mehr bei den Fotos liegt? Aber der Pfad der angegeben wird (in der Fehlermeldung) stimmt mit dem Pfad zu den Fotos überein..........

    Kann mir da wer helfen?

  • Moin!

    Ich habe es eben mal bei mir auf dem PC probiert und es klappt ohne Probleme.

    Die Fehlermeldung besagt, daß das Script die Datei nicht im Verzeichnis findet, vermutlich liegt die Grafik also in einem anderen Verzeichnis, als das PHP-Script. Du mußt dann natürlich den Pfad zu der Grafik mit angeben.

    G.a.d.M.

    Ronald

  • Dsa Script liegt im gleichen Verzeichnis, ganz sicher. Kann es Probleme geben weil ich das Script per include in einem anderen Verzeichnis eingebunden habe?

    Wegen was kann die Fehlermeldung noch kommen?
    Wie gebe ich den Pfad zur Datei an(bei unlink())?
    Geht das auch bei einem upload?

    (Das ist meine Uploadanweisung)

    Code
    copy($_FILES["file"]["tmp_name"], $_FILES["file"]["name"])

    Gruß

    Matthias

  • Das mit dem unlink() tut immer noch nicht. Ich weiß nicht mehr weiter.... :cry:

    Wenn ich das Script per include irgendwo einbinde wird es dann trotzdem noch im Verzeichnis in dem es gespeichert ist ausgeführt oder wird es dann im Verzeichnis ausgeführt in dem die Datei mit der include Anweisung liegt? :?:

    Muss ich bestimmte Rechte vergeben wenn gelöscht werden soll. Also so zusagen die CHMOD der zu löschenden Datei ändern? :?:

    Wer weiß da weiter :idea:

    Gruß

    Matthias

  • Warum bindest du sie denn überhaupt mit include ein, schreib den Code doch an die gleiche Stelle einmal direkt ins PHP-Script. Wenn es dann klappt, kannst du es ja immer noch wieder in eine Extradatei legen.

    Rechte: Du mußt natürlich das Recht haben, die Datei zu löschen (Stichwort CHMOD). Allerdings war das nicht die Fehlermeldung, sonder die besagt, daß die Datei gar nicht vorhanden ist (was allerdings auch bei falschen Rechten der Fall sein kann).

    Eine INC-Datei verhält sich immer so, wie die Mutterdatei, in die sie includet wurde, d.h. die Mutterdatei ist maßgebend für den Pfad.

    G.a.d.M.

    Ronald

  • :D aahhh...es kommt dunkel ins Licht.

    Bei den CHMOD.muss ich da die Rechte nur für den Ordner ändern (hab ich nämlich bereits getan) oder auch für jede einzelne Datei? Wenn ja, wie mache es, das es automatisch mit dem upload geht? :?:

    Gruß

    Matthias

  • Wenn du die Datein neu hochlädst, dann bekommen sie normalerweise automatisch die gleichen Rechte wie der Ordner.

    Sind die Dateien bereits im Ordner, dann kannst du sie (je nach FTP-Browser) alle markieren und dann für alle auf einmal die Rechte neu setzen.

    Ich weiß nicht welchen FTP-Explorer du benutzt, ich empfehle uneingeschränkt den SmartFTP, der läßt sich nicht nur wie der Windows-Explorer bedienen, er übernimmt auf der lokalen Seite auch alle Funktionen des Windows-Explorers.

    G.a.d.M.

    Ronald

  • Das es unter Windows nicht tut ist laut Self PHP normal

    Code
    Achtung: Unter dem Betriebssystem Windows wird die Funktion unlink() nicht
    unterstützt.

    Online tut es aber ebensowenig. Ich glaube ich gebe es auch bald auf. Vielleicht komme ich noch irgendwie anders an die Geschichte ran.....

    Als FTP Programm benutze ich WS FTP, bin bisher sehr zufrieden damit.

    Gruß

    Matthias

  • Zitat von MAD

    Das es unter Windows nicht tut ist laut Self PHP normal

    Code
    Achtung: Unter dem Betriebssystem Windows wird die Funktion unlink() nicht
    unterstützt.

    Moin!

    Wo hast du das denn her?

    Auf der aktuellen Page von SelfPHP steht davon nichts und auf meinem Rechner funktioniert es auch (WinXP + Apache).

    Poste doch mal den kompletten Quelltext oder schick ihn mir per PN.
    Die Fehlermeldung sagt doch eindeutig, daß die Datei nicht gefunden wird.


    G.a.d.M.

    Ronald

  • Hi Ronald,

    danke für das Angebot, habe es aber soeben selbst hingebogen.

    Jetzt hätte ich nur noch eine Frage: kann man bei dem Befehl unlink() nicht auch einen Pfad zu löschen angeben, so wie man bei copy() einen Pfad zm speichern angeben kann?

    Das mit Windows habe ich so bei Self PHP gefunden, allerdings in einer wahrscheinlich älteren Version lokal auf meinem Rechner.

    Danke fürEure Hilfe :D :D

    Gruß

    Matthias