目录复制?

时间:2011-08-18 06:03:20

标签: php

我需要用PHP复制一些目录,所以我做了一些搜索,发现了一些要尝试的脚本,考虑到PHP中没有内置方法。我运行了其中一个并得到了关于脚本超出最大运行时间的错误。想到这是因为有些文件太大了,我增加了那个时间。我不知道,脚本是递归复制目录然后将其复制到内部......我仍然在删除它所做的一切......

无论如何,我希望这里有人会有一个他们为这类事情写过或知道的可靠剧本。

编辑:我没想到将目录复制到内部并不是一个好主意。对不起谁写了我刚刚破坏的代码。

1 个答案:

答案 0 :(得分: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}");
            }
      }
   }
?>

您可以使用:

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