2011-08-18 3 views
3

J'ai besoin de copier des répertoires avec PHP, j'ai donc fait quelques recherches et j'ai trouvé quelques scripts à essayer, vu qu'il n'y a pas de méthode intégrée en PHP. J'ai couru l'un d'entre eux et j'ai eu une erreur à propos de la durée maximale de fonctionnement du script. En pensant que c'était parce que certains fichiers étaient trop gros, j'ai augmenté ce temps. Je ne le savais pas, le script copiait récursivement le répertoire et le copiait ensuite en lui-même ... Je suis encore en train de supprimer tout ce qu'il a fait ...Copie de répertoire?

Quoi qu'il en soit, j'espérais que quelqu'un ici aurait un script fiable qu'ils ont écrit ou connaissent pour ce genre de chose.

edit: il ne m'est pas venu à l'esprit que copier un répertoire vers l'intérieur n'était pas une bonne idée. Désolé celui qui a écrit le code que j'ai juste saccagé.

+1

Avez-vous essayé ceci: http://codestips.com/php-copy-directory-from-source-to-destination/? Ça me semble OK ... –

Répondre

2
<?php 
    function copy_directory($source, $destination, $whatsgoingon = false){ 
     if ($destination{strlen($destination) - 1} == '/'){ 
     $destination = substr($destination, 0, -1); 
     } 
     if (!is_dir($destination)){ 
     if ($whatsgoingon){ 
      echo "Creating directory {$destination}\n"; 
      } 
     mkdir($destination, 0755); 
     } 

     $folder = opendir($source); 

     while ($item = readdir($folder)){ 
     if ($item == '.' || $item == '..'){ 
      continue; 
      } 
     if (is_dir("{$source}/{$item}")){ 
      copy_dir("{$source}/{$item}", "{$destination}/{$item}", $whatsgoingon); 
     }else{ 
      if ($whatsgoingon){ 
       echo "Copying {$item} to {$destination}"."\n"; 
      } 
      copy("{$source}/{$item}", "{$destination}/{$item}"); 
      } 
     } 
    } 
?> 

Vous pouvez utiliser:

copy_directory('./directory', './directory2/'); // copy the directory 

copy_directory('./directory', './'); // copy the files to the same directory 

copy_directory('./directory', './directory2/', true); 
// Show these messages: 
// Creating directory ./directory2 
// Copying word.docx to ./directory2 
// Copying test.txt to ./directory2 
+0

Que signifie le. – mowwwalker

+0

./ est le répertoire en cours. – Murilo

Questions connexes