我需要用PHP复制一些目录,所以我做了一些搜索,发现了一些要尝试的脚本,考虑到PHP中没有内置方法。我运行了其中一个并得到了关于脚本超出最大运行时间的错误。想到这是因为有些文件太大了,我增加了那个时间。我不知道,脚本是递归复制目录然后将其复制到内部......我仍然在删除它所做的一切......
无论如何,我希望这里有人会有一个他们为这类事情写过或知道的可靠剧本。
编辑:我没想到将目录复制到内部并不是一个好主意。对不起谁写了我刚刚破坏的代码。
答案 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