[PHP] FTP-Rename fehler "RNFR command failed"

Rockhound

Lt. Commander
Registriert
Jan. 2003
Beiträge
1.673
Hi Leute.
Es handelt sich um ein Skript das 5 Bilder und 5 Thumbnails hochlädt. Die Thumbnails sind GIFs und die grossen Bilder JPGs. Nachdem er die Datei hochgeladen hat, benennt er jede davon um und zwar immer "$id_1.jpg" und den Thumbnail "$id_1_th_gif"

Hier mal das Script:
PHP:
 // Naechste ID
	include("db_connect.php");
	$resid 	= mysql_db_query("$database","SELECT * FROM gb_daten ORDER BY id DESC");
	$numid 	= mysql_num_rows($resid);
	$lastid	= mysql_result($resid, 0, "id");
	$nextid = $lastid +1;
   
   	  
	  $ftp_server = "XXXXXX";
	  $ftp_user_name = "XXXXX";
	  $ftp_user_pass = "XXXX";
	  $destination_path = "html/gastro2000/pics/data";

if ($thumb1) { 
	  $thd1 = "$thumb1_name";
	  $ths1 = "$thumb1";
	  $conn_id2 = ftp_connect("$ftp_server"); 
	  $login_result2 = ftp_login($conn_id2, "$ftp_user_name", "$ftp_user_pass"); 
	  if ((!$conn_id2) || (!$login_result2)) { 
        echo "Ftp-Verbindung nicht hergestellt!";
        echo "Verbindung mit $ftp_server nicht möglich"; 
        die; 
  	  } else {
        echo "Verbunden mit $ftp_server";
  	  }
      ftp_chdir($conn_id2, $destination_path);
	  $thu1 = ftp_put($conn_id2, "$thd1", "$ths1", FTP_BINARY);
	  $original_name2 = "$thumb1_name";
	  $new_name2 = $nextid;
	  $new_name2 .= "_1_th.gif";
	  $rename2 = ftp_rename ($conn_id2, $original_name2, $new_name2);
	  ftp_quit($conn_id2); 
	  }
	  
if ($bild1) { 
	  $bld1 = "$bild1_name";
	  $b1s1 = "$bild1";
	  $conn_id1 = ftp_connect("$ftp_server"); 
	  $login_result1 = ftp_login($conn_id1, "$ftp_user_name", "$ftp_user_pass"); 
	  if ((!$conn_id1) || (!$login_result1)) { 
        echo "Ftp-Verbindung nicht hergestellt!";
        echo "Verbindung mit $ftp_server nicht möglich"; 
        die; 
  	  } else {
        echo "Verbunden mit $ftp_server";
  	  }
      ftp_chdir($conn_id1, $destination_path);
	  $b1u1 = ftp_put($conn_id1, "$b1d1", "$b1s1", FTP_BINARY);
	  $original_name1 = "$bild1_name";
	  $new_name1 = $nextid;
	  $new_name1 .= "_1_big.jpg";
	  $rename1 = ftp_rename ($conn_id1, $original_name1, $new_name1);
	  ftp_quit($conn_id1); 
	  }

Das Thumbnail und das Bild werden hochgeladen. Aber nur das Thumbnail kommt mit dem richtigen Namen auf dem Server an. Das normale jpg-Bild heisst dann immer so ungefähr: "217,160,183,64,156,200" und deswegen klappt das auch nicht mit dem Umbenennen.

Weiss einer Rat :) ?
 
Jetzt wo ich es hier gepostet habe, seh ich den fehler.
habe bei der variable "bld1" anstatt ein "L" eine "1" reingetan. und dann hats alles verhauen. Sieht man aber im Dreamweaver sehr undeutlich :(

Aber nun noch ein kleines Problemchen, hoff ich.
Das fünfte Bild wird nicht hochgeladen. Fehlermeldung:

Warning: ftp_login() expects parameter 1 to be resource, boolean given in /home/www/XXX/XXX/XXX/XXX/XXX.php on line 250

Hier der Code:

PHP:
if ($bild5) { 
	  $bld5 = "$bild5_name";
	  $bls5 = "$bild5";
	  $conn_ida = ftp_connect("$ftp_server"); 
	  $login_resulta = ftp_login($conn_ida, "$ftp_user_name", "$ftp_user_pass"); 
	  if ((!$conn_ida) || (!$login_resulta)) { 
        echo "Ftp-Verbindung nicht hergestellt!";
        echo "Verbindung mit $ftp_server nicht möglich"; 
        die; 
  	  } else {
        echo "Verbunden mit $ftp_server";
  	  }
      ftp_chdir($conn_ida, $destination_path);
	  $b1ua = ftp_put($conn_ida, "$bld5", "$bls5", FTP_BINARY);
	  $original_namea = "$bild5_name";
	  $new_namea = $nextid;
	  $new_namea .= "_5.jpg";
	  $renamea = ftp_rename ($conn_ida, $original_namea, $new_namea);
	  ftp_quit($conn_ida); 
	  }


EDIT

Es liegt glaub ich nicht am Skript. Wenn ich das austausche bzw. im Quelltext mit einem anderen Bild upload verschiebe, funktioniert dieses dann nicht mehr. Es liegt glaub ich daran das es insgesamt 11 Bilder sind, und beim 11ten macht er dann schlapp.

ABER WARUM und wie lässt sich das verhindern ?
 
Zuletzt bearbeitet:
Ich bin mir nicht sicher, aber die Fehlermeldung deutet ja darauf hin, dass ftp_connect FALSE zurückgegeben hat, also keine Verbindung hergestellt werden konnte.
Kann es sein, dass der FTP-Server nur 10 Verbindungen von der gleichen IP zulässt und du beim Öffnen der 11. die ersten 10 noch nicht wieder richtig geschlossen hast?

Es wäre wohl sowieso sinvoller die FTP-Verbindung nur einmal am Anfang herzustellen und nicht eine extra Verbinudng für jede einzelen Datei.
 
ja stimmt werde ich mal probieren.

nun mal ne andere frage:
ich versuche herauszufinden welche ID die SQL-Datenbank an den nächsten Eintrag vergibt. Normalerweise ist das ja immer der letzte Eintrag in der DB 1+. Den zieh ich mir raus und schau welche ID der hat und mach das +1. Klappt auch ganz gut. Aber wenn man nun via phpmyadmin einen Eintrag löscht. z.b.: einer mit einer ID = 25 und danach wieder einen neuen Einträgt, hat dieser nicht die ID = 25 sondern 26. die sql-db merkt sich wohl das da mal einer drin war und vergibt dann die nächste.
Jetzt bringt quasi mein Script nix mehr:



PHP:
 // Naechste ID
	include("db_connect.php");
	$resid 	= mysql_db_query("$database","SELECT * FROM gb_daten ORDER BY id DESC");
	$numid 	= mysql_num_rows($resid);
	$lastid	= mysql_result($resid, 0, "id");
	$nextid = $lastid +1;

Wie kann ich wirklich herausfinden welche ID als nächstes in der DatenBank vergeben wird ??
 
Ich gehe einfach mal davon aus, dass du mit MySQL arbeitest, und die Dokumentation meint dazu Folgendes:

"You can retrieve the most recent AUTO_INCREMENT value with the LAST_INSERT_ID() SQL function or the mysql_insert_id() C API function. These functions are connection-specific, so their return value is not affected by another connection also doing inserts."

[edit]
Noch mehr Informationen dazu gibt's z.B. hier.
[/edit]
 
Zuletzt bearbeitet:
Zurück
Oben