2013-10-02 45 views
4

我想將文件從特定文件夾($ src)複製到特定目的地($ dst)。我從本教程here獲得了代碼。我似乎無法設法複製源目錄中的任何文件。PHP將目錄中的所有文件複製到另一個目錄中?

<?php 


$src = 'pictures'; 
$dst = 'dest'; 

function recurse_copy($src,$dst) { 
    $dir = opendir($src); 
    @mkdir($dst); 
    while(false !== ($file = readdir($dir))) { 
     if (($file != '.') && ($file != '..')) { 
      if (is_dir($src . '/' . $file)) { 
       recurse_copy($src . '/' . $file,$dst . '/' . $file); 
      } 
      else { 
       copy($src . '/' . $file,$dst . '/' . $file); 
      } 
     } 
    } 
    closedir($dir); 
} 

?> 

我沒有收到上述代碼的任何錯誤。

+0

你能讀取文件嗎?你有什麼錯誤嗎? –

+1

我喜歡這麼多的帖子,而忽略了最重要的部分,錯誤信息... – OIS

+0

由於某種原因,是否使用了linux shell命令?它似乎並不像你在這裏做什麼特別有趣的事情(比如過濾掉某些文件),所以我只會使用linux命令(如果需要,可以從PHP中調用)。 –

回答

2

如果你沒有任何特別的處理方法(比如過濾某些文件或其他東西),我會使用shell命令來做到這一點。

Linux下的一個例子:

$src = '/full/path/to/src'; // or relative path if so desired 
$dst = '/full/path/to/dst'; // or relative path if so desired 
$command = 'cp -a ' . $src . ' ' .$dst; 
$shell_result_output = shell_exec(escapeshellcmd($command)); 

當然,你只想使用任何選項從shell命令提供給你,如果你想調整的行爲(即改變所有權等)。

這應該比你的逐個文件遞歸方法執行得更快。

+0

(1)性能的首選方法:正如你所提到的那樣,「執行速度要比逐個文件遞歸方法快得多」; (2)關注的問題:您應該使用文件系統來處理文件系統,並使用php來處理網頁。 –

9

我剛試過這個,它對我來說就像一個魅力。

<?php 

$src = 'pictures'; 
$dst = 'dest'; 
$files = glob("pictures/*.*"); 
     foreach($files as $file){ 
     $file_to_go = str_replace($src,$dst,$file); 
     copy($file, $file_to_go); 
     } 

?> 
相關問題