首先,我搜索并尝试了许多功能,但是所有功能都可以通过将源目录中的所有内容(而不是整个源文件夹)复制到目标位置来实现。
但是我想复制整个目录。
我尝试过什么?
此功能将$source
的文件夹 copy 的内容复制到目标$dest
的文件夹 New Copy 。
$source = 'C:\MAMP\htdocs\projectAuru\our/files/copy';
$dest = 'C:\MAMP\htdocs\projectAuru\our/files/New Copy';
function xcopy($source, $dest, $permissions = 0777)
{
// Check for symlinks
if (is_link($source)) {
return symlink(readlink($source), $dest);
}
// Simple copy for a file
if (is_file($source)) {
return copy($source, $dest);
}
// Make destination directory
if (!is_dir($dest)) {
mkdir($dest, $permissions);
}
// Loop through the folder
$dir = dir($source);
while (false !== $entry = $dir->read()) {
// Skip pointers
if ($entry == '.' || $entry == '..') {
continue;
}
// Deep copy directories
xcopy("$source/$entry", "$dest/$entry", $permissions);
}
// Clean up
$dir->close();
return true;
}
我正在寻找什么?
它应该将我的整个目录副本(连同其所有文件和子文件夹)复制到目标文件夹,因此最终目标目录应如下所示:
C:\ MAMP \ htdocs \ projectAuru \ our / files / New Copy / 副本
答案 0 :(得分:0)
解决方案是在复制文件夹中获取我们正在复制的文件夹的名称和具有该名称的mkdir,然后将所有文件复制到该mkdir目标。
// Get value after last slash and trim trailing slash if exists
$copyFromFolderName = substr(rtrim($copyFrom, '/'), strrpos(rtrim($copyFrom, '/'), '/') + 1);
if (!is_dir($base.$copyTo.'/'.$copyFromFolderName)) {
mkdir($base.$copyTo.'/'.$copyFromFolderName, 0777, true);
xcopy($base.$copyFrom, $base.$copyTo.'/'.$copyFromFolderName);
}else{
xcopy($base.$copyFrom, $base.$copyTo.'/'.$copyFromFolderName);
}