rename() in PHP = No such file or directory in..

A

awak3

Hallo,

ich schreibe gerade ein kleines Rename-Script welches meine Bilddateien und die dazugehoerige Datenbank Eintraege umbenennt.

Folgender Fehler tut sich beim aufrufen jedoch auf:

Warning: rename(Users/tobiasz/Sites/convertpics/New_2_18_2386506_1.jpg,Users/tobiasz/Sites/convertpics/1.jpg) [function.rename]: No such file or directory in /Users/tobiasz/Sites/picturerenamer_beta.php on line 44

und hier ist der relevante Code:

Code:
for($id=1; $id<230; $id++) {

        $result = mysql_query("SELECT picture FROM sms_profiles WHERE id='".$id."'");
        $output = mysql_fetch_array($result);
        
        $pic = $output['picture'];
        $picrdy = "$pic.jpg";
        $idrdy = "$id.jpg";
         
        $renamea = "/convertpics/".$pic."";
        $renameb = "/convertpics/".$idrdy."";
        rename($renamea, $renameb);
        $change = "UPDATE sms_profiles SET picture='".$idrdy."' WHERE id='".$id."'";
    }
ich hab versucht die Pfadeingaben zu aendern mit Users/tobiasz/Sites/ etc., jedoch ohne erfolg. Rechte wurden alle gegeben. Bin fuer jede Hilfe sehr dankbar. :)
 
Versuch es mal mit diesem Code:
PHP:
for($id=1; $id<230; $id++) {

        $result = mysql_query("SELECT picture FROM sms_profiles WHERE id='".$id."'");
        $output = mysql_fetch_array($result);
        
        $pic = $output['picture'];
        $picrdy = "$pic.jpg";
        $idrdy = "$id.jpg";
         
        $renamea1 = "/convertpics/".$pic."";
        $renameb1 = "/convertpics/".$idrdy."";
        $renamea2 = trim($renamea1);
        $renameb2 = trim($renameb1);
        rename($renamea2, $renameb2);
        $change = "UPDATE sms_profiles SET picture='".$idrdy."' WHERE id='".$id."'";
    }
 
Danke, das mit Trim hab ich auch schon in Google gelesen, aber hat auch nicht funktioniert. Trotzdem viel dank fuer die Hilfe! :))

Noch irgendwelche Vorschlaege?
 
Und noch ein kleiner Hinweis:

Code:
"/convertpics/"

Mit diesem Pfad startest du beim Wurzelverzeichnis des Webservers, nicht im aktuellen.
 
Generelle Frage: Warum schickst du 460 Anfragen an die Datenbank, wo du das ganze doch auch in zweien lösen kannst?

Bin nicht so der MySQL Experte, koenntest du mir sagen wie ich dies mit nur zwei Anfragen loesen koennte? :)
Waer sehr interessant.

@Felix Jacobi

Wie gesagt, ich habe schon mehrere moeglichkeiten mit den Directorys ausprobiert. Trotzdem dankeschoen. Ich werde das Script morgen nochmal an einem anderen Rechner ausfuehren.
 
Nun habe ich herausgefunden, dass wenn ich die Bilder von Hand umbenenne und diese mit dem Script (auch im /convertpics/ folder) anspreche, also z.B.New_2_18_2386506_1.jpg in a.jpg, dann wird die Datei auch durch das Script umbenannt, ohne Fehlermeldung. Wie ist das zu verstehen? ich habe die Variablen ja schon im trim(); Befehl stehen.

Danke,
Tobiasz
 
Da ich mir auch immer wieder Stolperfallen in Pathbeschreibungen mache, setzte ich gründsätzlich ein ./ davor, in Deinem Fall also

anstatt
PHP:
$renamea = "/convertpics/".$pic."";
// eher
$renamea = "./convertpics/".$pic."";
// oder
$renamea = "convertpics/".$pic."";
Felix hat es schon angesprochen. Weiterhin könnte es ein einfacher Fehler sein, wo irgendwo ein Doppelslash beim Zusammelgene des Zugriffsordners geschieht etc pp. Einfach mal Deine Variablen per echo ausgeben und schauen, ob es wirklich richtig ist..

mfg chmee
 
Danke, aber ich kann schon auf die Ordner zugreifen, jedoch wie es aussieht nicht mit den MySQL Variablen. Hat jemand eine erklaerung?
 
Die "pictures" in der DB, sind die mit oder ohne Endung gespeichert? Hast Du vielleicht zwei Endungen?

mfg chmee
 
Zurück