PHP将目录中的所有文件复制到另一个目录?

时间:2013-10-02 23:26:56

标签: php

我正在尝试将文件从特定文件夹($ src)复制到特定目标($ dst)。我从本教程here获得了代码。我似乎无法复制源目录中的任何文件。

<?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); 
} 

?>

我没有收到上述代码的任何错误。

2 个答案:

答案 0 :(得分:10)

我只是试过这个,它对我来说就像一个魅力。

<?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);
      }

?>

答案 1 :(得分: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命令可用的任何选项。

这也应该比逐个文件的递归方法执行得快得多。