【问题标题】:Recursive function for copy of multilevel folder is not working多级文件夹副本的递归函数不起作用
【发布时间】:2010-05-07 09:23:24
【问题描述】:

复制的递归函数 多级文件夹不起作用。

我有一个代码可以将所有多层文件夹复制到新文件夹。

但是中间我觉得路径识别有问题,看下面的代码..

<?php
$source = '/var/www/html/pranav_test';
$destination = '/var/www/html/parth';

copy_recursive_dirs($source, $destination);
function copy_recursive_dirs($dirsource, $dirdest)
{ 
  // recursive function to copy
 // all subdirectories and contents:
 if(is_dir($dirsource))
 {
  $dir_handle=opendir($dirsource);



 }
 if(!is_dir($dirdest))
 {
    mkdir($dirdest, 0777);
 }
 while($file=readdir($dir_handle))
 {/*echo "<pre>";
  print_r($file);*/
     if($file!="." && $file!="..")
     {
         if(!is_dir($dirsource.DIRECTORY_SEPARATOR.$file)) 
         {
           copy ($dirsource.DIRECTORY_SEPARATOR.$file, $dirdest.DIRECTORY_SEPARATOR.$dirsource.DIRECTORY_SEPARATOR.$file);
         }
         else{
            copy_recursive_dirs($dirsource.DIRECTORY_SEPARATOR.$file, $dirdest);
         }
     }
  }
 closedir($dir_handle);
 return true;
}

?>

从上面的代码中,if循环根据要求有一个复制功能,但是这里申请目的地的路径不正确,我也尝试过basename功能..但它没有得到预期的结果..下面是我正在谈论的 if 循环带有描述输出的注释...

 if(!is_dir($dirsource.DIRECTORY_SEPARATOR.$file)) 
    {
      $basefile = basename($dirsource.DIRECTORY_SEPARATOR.$file);//it gives the file name
     echo "Pranav<br>".$dirdest.DIRECTORY_SEPARATOR.$dirsource.DIRECTORY_SEPARATOR.$file;//it outputs for example "/var/www/html/parth//var/www/html/pranav_test/media/system/js/caption.js" which is not correct..
    copy ($dirsource.DIRECTORY_SEPARATOR.$file, $dirdest.DIRECTORY_SEPARATOR.$dirsource.DIRECTORY_SEPARATOR.$file);
    }  

如上所示,我无法将文件和文件夹复制到预期的路径..请指导我在函数中放置正确的路径....

【问题讨论】:

  • 显示错误,而不是代码,但错误消息可以提供帮助。
  • 没有这样的错误显示在屏幕上,根据我发现路径问题,你可以判断复制功能找不到正确的复制路径...
  • 所以你应该设法以某种方式查看错误消息。查看错误日志或打开显示错误

标签: php copy filepath


【解决方案1】:

我在代码中看到一些关于 dir 和 files 目标路径的奇怪内容,请尝试使用此代码(未测试):

<?php
$source = '/var/www/html/pranav_test';
$destination = '/var/www/html/parth';

copy_recursive_dirs($source, $destination);
function copy_recursive_dirs($dirsource, $dirdest)
{ 
  // recursive function to copy
 // all subdirectories and contents:
 if(is_dir($dirsource))
 {
  $dir_handle=opendir($dirsource);



 }
 if(!is_dir($dirdest))
 {
    mkdir($dirdest, 0777);
 }
 while($file=readdir($dir_handle))
 {/*echo "<pre>";
  print_r($file);*/
     if($file!="." && $file!="..")
     {
         if(!is_dir($dirsource.DIRECTORY_SEPARATOR.$file)) 
         {
            //Copy the file at the same level in the destination folder
            copy ($dirsource.DIRECTORY_SEPARATOR.$file, $dirdest.DIRECTORY_SEPARATOR.$file);
         }
         else{
            //Copy the dir at the same lavel in the destination folder
            copy_recursive_dirs($dirsource.DIRECTORY_SEPARATOR.$file, $dirdest.DIRECTORY_SEPARATOR.$file);
         }
     }
  }
 closedir($dir_handle);
 return true;
}

?>

【讨论】:

    猜你喜欢
    • 2020-06-23
    • 1970-01-01
    • 2018-07-14
    • 2017-10-14
    • 1970-01-01
    • 2018-04-02
    • 2014-04-03
    • 1970-01-01
    相关资源
    最近更新 更多