2011-08-18 118 views
3

我需要用PHP複製一些目錄,所以我做了一些搜索,發現有幾個腳本可以嘗試,因爲PHP中沒有內置方法。我跑了其中的一個,並得到了有關腳本超出最大運行時間的錯誤。認爲這是因爲一些文件太大,我增加了時間。我不知道,腳本是遞歸複製目錄,然後複製它自己...我仍然在刪除它所做的一切...目錄複製?

無論如何,我希望有人在這裏會有一個他們已經寫出或知道的這種類型的可靠腳本。

編輯:我沒有想到,將目錄複製到裏面本身並不是一個好主意。對不起誰寫了我剛剛被刪除的代碼。

+1

你試試這個:http://codestips.com/php-copy-directory-from-source-to-destination/?對我來說看起來不錯... –

回答

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 
+0

./是什麼意思? – mowwwalker

+0

./是當前目錄。 – Murilo