PHP:复制目录的全部内容

时间:2016-02-10 08:42:37

标签: php copy mkdir opendir readdir

对不起新帖!我还不信任评论其他帖子。

我在复制文件夹时遇到问题,这是我开始的地方: Copy entire contents of a directory

功能

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

我的输入

$src = "http://$_SERVER[HTTP_HOST]/_template/function/";
$dst = "http://$_SERVER[HTTP_HOST]/city/department/function/";
recurse_copy($src, $dst);

我也试过这个

$src = "$_SERVER[DOCUMENT_ROOT]/_template/function/"; // And so on...

执行该功能但未复制任何内容。

关于可能出错的任何想法?

解决

Working solution

一起
$src = "$_SERVER[DOCUMENT_ROOT]/_template/function/";
$dst = "$_SERVER[DOCUMENT_ROOT]/city/department/function/";
recurse_copy($src, $dst);

2 个答案:

答案 0 :(得分:0)

使用本地路径

$src= "_template/function/";
$dst= "city/department/function/";
recurse_copy($src, $dst);

copy在您的服务器上本地运行。您正在尝试使用HTTP方案进行复制,但这种方式并不正常。

答案 1 :(得分:0)

它没有经过测试,但我认为问题可能是在尝试将文件复制到目标目录之前不一定要创建目标目录。创建目标目录的代码段需要文件夹路径而不是完整的文件路径 - 因此使用dirname( $dst )

if( !defined('DS') ) define( 'DS', DIRECTORY_SEPARATOR );

function recurse_copy( $src, $dst ) { 

    $dir = opendir( $src ); 
    @mkdir( dirname( $dst ) );

    while( false !== ( $file = readdir( $dir ) ) ) { 
        if( $file != '.' && $file != '..' ) { 
            if( is_dir( $src . DS . $file ) ) { 
                recurse_copy( $src . DS . $file, $dst . DS . $file ); 
            } else { 
                copy( $src . DS . $file, $dst . DS . $file ); 
            } 
        } 
    } 
    closedir( $dir ); 
}