PHP:复制目录的全部内容


PHP: 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...

该函数已执行,但未复制任何内容。

关于可能出现什么问题的任何想法?

解决

工作解决方案

以及

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

它没有经过测试,但我认为问题可能是在尝试将文件复制到目标目录之前不一定会创建目标目录。创建目标目录的代码段需要文件夹路径而不是完整的文件路径 - 因此使用 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 ); 
}

使用本地路径

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

copy在您的服务器上本地工作。您正在尝试使用 HTTP 方案进行复制,但它不是那样工作的。