PHP: 复制目录的全部内容

PHP: Copy entire contents of a directory

对不起,新 post! 我还不能对其他人发表评论 posts。

我在复制文件夹时遇到问题,这是我开始的地方: 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);

使用本地路径

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

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

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