我正在尝试将文件从特定文件夹($ 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);
}
?>
我没有收到上述代码的任何错误。
答案 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命令可用的任何选项。
这也应该比逐个文件的递归方法执行得快得多。