Рекурсивная функция для копирования
Многоуровневая папка не работает.
У меня есть код для копирования всех многоуровневых папок в новую папку.
Но между ними возникает проблема правильного распознавания пути, см. Код ниже.
<?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);
}
как показано выше, я не могу скопировать файлы и папки по ожидаемому пути ... пожалуйста, укажите, как правильно указать путь в функции ....