3 Stimmen

Warum funktioniert Unlink nicht in diesem Skript?

Was Sie unten sehen, ist ein Teil meines Skripts.

Das Problem ist, dass ich nur das verkleinerte Daumenbild benötige und nicht die Ursprungsdatei. Das Bild wird nicht verkleinert, wenn es nicht hochgeladen wird, daher sollte der Prozess folgendermaßen aussehen:

  • -> erstellt einen Ordner
  • -> lädt das Originalbild hoch
  • -> verkleinert und speichert den Daumen
  • -> löscht die Ursprungsdatei

Jetzt funktioniert dieser letzte Teil (Löschung) nicht. Ich erhalte diesen Fehler:

PHP Warnung: unlink($target_file) [function.unlink]: Datei oder Verzeichnis nicht gefunden in /Pfad/Datei.php in Zeile X

Es findet es nicht!

if (isset($_REQUEST['Submit'])) {

    mkdir($dirloc, 0755, true); 
    $i1=$_FILES['image']['name']; 
    $nw1="$dirloc/".$i1; 

    if ($i1) {
        $copy1 = copy($_FILES['image']['tmp_name'], $nw1);
    }

    $fileName = $_FILES["image"]["name"];
    $kaboom = explode(".", $fileName);
    $fileExt = end($kaboom);
    function ak_img_resize($target, $newcopy, $w, $h, $ext) {
        list($w_orig, $h_orig) = getimagesize($target);
        $scale_ratio = $w_orig / $h_orig;
        if (($w / $h) > $scale_ratio) {
            $w = $h * $scale_ratio;
        } else {
            $h = $w / $scale_ratio;
        }
        $img = "";
        $ext = strtolower($ext);
        if ($ext == "gif"){
            $img = imagecreatefromgif($target);
        } else if($ext =="png") {
            $img = imagecreatefrompng($target);
        } else {
            $img = imagecreatefromjpeg($target);
        }
        $tci = imagecreatetruecolor($w, $h);
        imagecopyresampled($tci, $img, 0, 0, 0, 0, $w, $h, $w_orig, $h_orig);
        imagejpeg($tci, $newcopy, 80);
    }
    $target_file = "$dirloc/$fileName";

    $resized_file = "$dirloc/thumbnail.$fileExt";
    $wmax = 150;
    $hmax = 150;
    ak_img_resize($target_file, $resized_file, $wmax, $hmax, $fileExt);
    $xxx = $resized_file;
    $delete_target_file = unlink('$target_file');    

    $sql = "INSERT INTO $db_table(path,code,timecode,catg,description,title) values 
            ('$xxx','".mysql_real_escape_string(stripslashes($_REQUEST['code']))."',
            '".mysql_real_escape_string(stripslashes($times))."',
            '".mysql_real_escape_string(stripslashes($_REQUEST['catg']))."',
            '".mysql_real_escape_string(stripslashes($_REQUEST['area2']))."',
            '".mysql_real_escape_string(stripslashes($_REQUEST['fbox']))."')";

    if($result = mysql_query($sql ,$db)) {
        $codes = $_REQUEST['code'];
        $linkto = "?v=$codes";
        echo "window.location = '$linkto'";
    } else { 
        echo "FEHLER: ".mysql_error();
    }
} else {
    // Hier kommt das Formular
}

Kann mir jemand erklären, warum es nicht gelöscht wird?

9voto

Shakti Singh Punkte 81441

Verwenden Sie doppelte Anführungszeichen oder überhaupt keine Anführungszeichen.

unlink("$target_file"); 

oder

unlink($target_file); 

Variablen, die von einzelnen Anführungszeichen umgeben sind, werden nicht geparst, Sie müssen sie mit doppelten Anführungszeichen umgeben oder überhaupt keine Anführungszeichen verwenden.

1voto

Umut KIRGÖZ Punkte 1915

Stelle sicher, dass $target_file den absoluten Pfad der Datei enthält. Es scheint, dass unlink die Datei, die du löschen möchtest, nicht finden kann.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X