• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Fehler beim kopieren!

Status
Für weitere Antworten geschlossen.

nuutztier

Neues Mitglied
Also ich hab folgenden Code gefunden und ein wenig umgeschrieben:

PHP:
$num = 0;
  if(!is_dir($dstdir)) mkdir($dstdir);
  if($curdir = opendir($srcdir)) {
   while($file = readdir($curdir)) {
     if($file != '.' && $file != '..') {
       $srcfile = $srcdir . '/' . $file;
       $dstfile = $dstdir . '/' . $file;
       if(is_file($srcfile)) {
         if(is_file($dstfile)) $ow = filemtime($srcfile) - filemtime($dstfile); else $ow = 1;
         if($ow > 0) {
           if($verbose) echo "Copying '$srcfile' to '$dstfile'...";
           if(copy($srcfile, $dstfile)) {

//-----------------------------------------------------------------
                $needle = array("_vorlage");
                $replace = "etwas_anderes";
                $haystack = file_get_contents("$dstfile");
                
                $text = str_replace($needle, $replace, $haystack);
                
                $fp = fopen("$dstfile","w");
                fwrite( $fp, $text);
                fclose( $fp );
//-----------------------------------------------------------------
                
             touch($dstfile, filemtime($srcfile)); $num++;
             if($verbose) echo "OK\n";
           }
           else echo "Error: File '$srcfile' could not be copied!\n";
         }                 
       }
       else if(is_dir($srcfile)) {
         $num += dircopy($srcfile, $dstfile, $verbose);
       }
     }
   }
   closedir($curdir);
  }
Funktioniert so weit auch ganz gut, die markierte Stelle soll halt in jeder Datei ein bestimmtes Wort ersetzen. Da die Funktion auch alle Unterverzeichnisse durchläuft, dachte ich, das auch alle Wörter in den Unterdateien ersetzt werden, werden sie aber nicht.

Heißt alle Dateien im Hauptverzeichnis werden entsprechend bearbeitet, die Unterverzeichnisse werden dann zwar kopiert aber die Dateien darin werden nicht richtig geändert: Das zu ersetzende Wort wird entfernt aber das neue wir nicht eingesetzt. Was ist an dem Code falsch?
 
Versuchs mal mit

PHP:
$fp = fopen($srcfile,"w");
 
Mit

PHP:
$fp = fopen($srcfile,"w");
funktioniert es auch nicht...

EDIT: Hab den Fehler gerade gefunden:

Hab bei
PHP:
else if(is_dir($srcfile)) {
         $num += dircopy($srcfile, $dstfile, $verbose, $user, $element, $email);
       }
noch mehrere Parameter übergeben, die für das Replace wichtig sind.
Manchmal sieht man den Wald vor lauter Bäumen nicht. ;)
 
Zuletzt bearbeitet:
Status
Für weitere Antworten geschlossen.
Zurück
Oben