Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Копирование директории со всеми вложенными файлами
 
 автор: m@rchello   (24.05.2008 в 12:19)   письмо автору
 
 

доброго времени суток

подскажите как скопировать директорию со всеми вложеными файлами и директориями???

   
 
 автор: FireTiger   (24.05.2008 в 16:44)   письмо автору
 
   для: m@rchello   (24.05.2008 в 12:19)
 

Я так понял, что это нужно сделать средствами PHP ))
Вот есть такая функция, написана не мною, но выложена на свободное скачивание и использование:

copy_u($src,$dest) - копирует папку или файл $src в указанное место $dest. Заметьте, что, естественно, в качестве $dest нужно указывать не папку, в которую нужно скопировать $src, а папку, которая должна в результате этого получиться. То же самое касается и файлов.

<?php 
function copy_u($src,$dest)
{
        if(!file_exists($src)) return false;
        if(is_file($src)) return copy($src,$dest);
        
        $src=realpath($src).'/';
        $dest=realpath($dest).'/';
        if(substr($dest,0,strlen($src))==$src) return false;
        
        $error=false;
        
        if(!mkdir($dest,0777)) $error=true;
        
        $dh=opendir($src);
        while(false!==($f=readdir($dh)))
        {
                if($f=='.' || $f=='..') continue;
                if(!copy_u($src.'/'.$f,$dest.'/'.$f)) $error=true;
        }
        closedir($dh);
        
        return !$error;
}
?>


Используйте)

   
 
 автор: FireTiger   (24.05.2008 в 16:47)   письмо автору
 
   для: FireTiger   (24.05.2008 в 16:44)
 

Вот может вам еще понадобится функция удаления папки со всеми вложенными файлами и директориями:
remove_u($dir) - удаляет файл или папку $dir (папка может и не быть пустой). Постфикс «_u» у функций обозначает «universal» - универсальный, не зависящий от того, папка это или файл, работающий всегда.

<?php
function remove_u($dir)
{
        if(is_file($dir)) return unlink($dir);
        
        $dh=opendir($dir);
        while(false!==($file=readdir($dh)))
        {
                if($file=='.'||$file=='..') continue;
                remove_u($dir."/".$file);
        }
        closedir($dh);
        
        return rmdir($dir);
}
?>

   
 
 автор: m@rchello   (24.05.2008 в 17:36)   письмо автору
 
   для: FireTiger   (24.05.2008 в 16:47)
 

спасибо!