Dateikopie von a nach b auf gleichem Server klappt nicht

Ich glaube Deepthroath meinte das wohl eher so

PHP:
move_pic("/das_verzeichniss_von_wo_das_bild_kommt", "/das_verzeichniss_wo_es_hinsoll");
 
Hi,

das war doch nur ein Beispiel. In Deinem Fall sieht der Aufruf so aus:

PHP:
move_pic($from, $to);

LG

PS.: Und Fehlermeldungen bitte nicht abschneiden. Die Zeilennummer wäre noch interessant gewesen und wie Dein Code jetzt aussieht.
 
Hallo,

hat noch einer eine Idee warum das hier noch nicht funktionieren will?
Hier mein derzeitiger Code

PHP:
<?php 
ini_set("display_errors", 1);
error_reporting(E_ALL);

//$from = "./grau.jpg";    //funktioniert auch nicht
//$to = "./uploads/grau.jpg";

$from = $_SERVER['DOCUMENT_ROOT']."/grau.jpg";
$to = $_SERVER['DOCUMENT_ROOT']."/uploads/grau.jpg";  

function move_pic($from, $to){ 

   //file_exists() - Existenz der Datei prüfen 
   if(!file_exists($to)){ 
   	
      //!copy() - Datei kopieren 
      if (rename($from, $to)) { 
         print ("failed to copy $file...<br>\n"); 
      } 
      else{ 
         //unlink() - Datei löschen 
         unlink($from); 
         
      } 
   } 
} 

?>

Bin mir inzwischen nicht mehr so mit der Zeile "function move_pic" sicher, hat einer eine Alternative?

Gruß
Julia
 
PHP:
function move_pic( $from, $to )
{
	if( !file_exists($from) ) {
		echo 'Fehler: Quelldatei "'.htmlspecialchars($from).'" nicht gefunden';
		return false;
	}
	if( is_dir($to) ) {
		$to .= basename($from);
	}
	if( is_file($to) ) {
		echo 'Fehler: Zieldatei "'.htmlspecialchars($to).'" existiert bereits';
		return false;
	}
	if( !rename($from, $to) ) {
		echo 'Fehler: Datei "'.htmlspecialchars($from).'" konnte nicht kopiert werden';
		return false;
	}
	return true;
}
 
Bin mir inzwischen nicht mehr so mit der Zeile "function move_pic" sicher, hat einer eine Alternative?
Du hast doch nicht etwa diese Zeile ersetzt mit dem Code den ich geschrieben habe?

Nochmal ganz unzweideutig: Du mußt die Funktion, die du vorher definiert hast mit "function move_pic ..." dann auch aufrufen.
PHP:
$from = "/source/path/from.png";
$to = "/target/path";

function move_pic($from, $to) { # diese Parameter haben nichts mit den obigen Variablen zu tun!
   ...
}

move_pic($from, $to);
Gruß
 
Die Überraschung kam über Nacht - heute früh liegen die Dateien im Ordner /uploads/ !

Habe gleich nochmals verschiedenes ausprobiert - Ergebnis:
Der Fehler liegt darin, dass diese FTP-Aktionen schon durchgeführt werden, aber generell erst nach einem refresh sichtbar werden.
Mit FileZilla (und einigen anderen FTP-Programmen) hat man sich dran gewöhnt, dass die durchgeführten Aktivitäten auch sofort angezeigt werden.

Beim copy() -Befehl mit php ist dies NICHT der Fall, auch nicht, wenn man das Verzeichnis wechselt und dann wieder zurück springt. Will man die Aktion z.B. über FileZilla verfolgen unbedingt ein refresh im Quell-Verzeichnis UND nochmals im Ziel-Verzeichnis durchführen

Danke an alle die sich so engagiert an meinem "Problem" beteiligt hatten.

Hier nochmal der funktionierende, Einfach-Code

PHP:
<?php 
ini_set("display_errors", 1);
error_reporting(E_ALL);
//$from1 = "./grau.jpg";
//$to2 = "./uploads/grau.jpg";

$from1 = $_SERVER['DOCUMENT_ROOT']."/grau.jpg";
$to2 = $_SERVER['DOCUMENT_ROOT']."/uploads/grau.jpg"; 

copy($from1, $to2);
unlink($from1);

// ACHTUNG: wenn Controlle über FTP-Client 
// dann unbedingt im jeweiligen Verzeichnis ein refresh durchführen!!

/*
function move_pic($from, $to){ 

   //file_exists() - Existenz der Datei prüfen 
   if(!file_exists($to)){ 
   	
      //!copy() - Datei kopieren 
      if (copy($from, $to)) { 
         print ("failed to copy $file...<br>\n"); 
      } 
      else{ 
         //unlink() - Datei löschen 
         unlink($from); 
         
      } 
   } 
} 
*/
?>
 
Der Fehler liegt darin, dass diese FTP-Aktionen schon durchgeführt werden, aber generell erst nach einem refresh sichtbar werden.
Sei mir nicht böse, aber ich hatte nicht gedacht, dass du das nicht berücksichtigt. Alles was sich nicht auf der eigenen Festplatte abspielt wird gerne gepuffert oder in einem Cache gespeichert.
 
Zurück