在我的旧VPS上,我使用以下代码将目录中的文件和目录复制到一个新目录中,该目录是在用户提交表单后创建的。
function copyr($source, $dest)
{
// Simple copy for a file
if (is_file($source)) {
return copy($source, $dest);
}
// Make destination directory
if (!is_dir($dest)) {
mkdir($dest);
$company = ($_POST['company']);
}
// Loop through the folder
$dir = dir($source);
while (false !== $entry = $dir->read()) {
// Skip pointers
if ($entry == '.' || $entry == '..') {
continue;
}
// Deep copy directories
if ($dest !== "$source/$entry") {
copyr("$source/$entry", "$dest/$entry");
}
}
// Clean up
$dir->close();
return true;
}
copyr('Template/MemberPages', "Members/$company")
然而,现在在我的新VPS上,它将只创建主目录,但不会将任何文件复制到其中。我不明白两个VPS之间会发生什么变化?
发布于 2011-10-15 13:22:15
尝试如下所示:
$source = "dir/dir/dir";
$dest= "dest/dir";
mkdir($dest, 0755);
foreach (
$iterator = new \RecursiveIteratorIterator(
new \RecursiveDirectoryIterator($source, \RecursiveDirectoryIterator::SKIP_DOTS),
\RecursiveIteratorIterator::SELF_FIRST) as $item
) {
if ($item->isDir()) {
mkdir($dest . DIRECTORY_SEPARATOR . $iterator->getSubPathname());
} else {
copy($item, $dest . DIRECTORY_SEPARATOR . $iterator->getSubPathname());
}
}
迭代器遍历所有文件夹和子文件夹,并将文件从$source
复制到$dest
发布于 2011-04-19 03:27:30
我可以建议(假设它是一个*nix )你只需要对cp -r
做一个系统调用,然后让它为你做拷贝。
发布于 2012-08-14 15:49:02
我更改了Joseph的代码(如下所示),因为它对我不起作用。这就是工作原理:
function cpy($source, $dest){
if(is_dir($source)) {
$dir_handle=opendir($source);
while($file=readdir($dir_handle)){
if($file!="." && $file!=".."){
if(is_dir($source."/".$file)){
if(!is_dir($dest."/".$file)){
mkdir($dest."/".$file);
}
cpy($source."/".$file, $dest."/".$file);
} else {
copy($source."/".$file, $dest."/".$file);
}
}
}
closedir($dir_handle);
} else {
copy($source, $dest);
}
}
在创建目录之前编辑添加的测试(第7行)
https://stackoverflow.com/questions/5707806
复制相似问题