Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как сделать копию папки со всем ее содержимым?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
tundramani
Отправлено: 08 Декабря, 2019 - 18:16:00
Post Id


Новичок


Покинул форум
Сообщений всего: 17
Дата рег-ции: Окт. 2018  


Помог: 0 раз(а)




Вот вариант решения задачи:



PHP:
скопировать код в буфер обмена
  1.  
  2. function copy_folder($d1, $d2, $upd = true, $force = true) {
  3.     if ( is_dir( $d1 ) ) {
  4.         $d2 = mkdir_safe( $d2, $force );
  5.         if (!$d2) {fs_log("!!fail $d2"); return;}
  6.         $d = dir( $d1 );
  7.         while ( false !== ( $entry = $d->read() ) ) {
  8.             if ( $entry != '.' && $entry != '..' )
  9.                 copy_folder( "$d1/$entry", "$d2/$entry", $upd, $force );
  10.         }
  11.         $d->close();
  12.     }
  13.     else {
  14.         $ok = copy_safe( $d1, $d2, $upd );
  15.         $ok = ($ok) ? "ok-- " : " -- ";
  16.         fs_log("{$ok}$d1");
  17.     }
  18. } //function copy_folder
  19.  
  20. function mkdir_safe( $dir, $force ) {
  21.     if (file_exists($dir)) {
  22.         if (is_dir($dir)) return $dir;
  23.         else if (!$force) return false;
  24.         unlink($dir);
  25.     }
  26.     return (mkdir($dir, 0777, true)) ? $dir : false;
  27. } //function mkdir_safe
  28.  
  29. function copy_safe ($f1, $f2, $upd) {
  30.     $time1 = filemtime($f1);
  31.     if (file_exists($f2)) {
  32.         $time2 = filemtime($f2);
  33.         if ($time2 >= $time1 && $upd) return false;
  34.     }
  35.     $ok = copy($f1, $f2);
  36.     if ($ok) touch($f2, $time1);
  37.     return $ok;
  38. } //function copy_safe
  39.  
  40. function fs_log($str) {
  41.     $log = fopen("./fs_log.txt", "a");
  42.     $time = date("Y-m-d H:i:s");
  43.     fwrite($log, "$str ($time)\n");
  44.     fclose($log);
  45. }
  46.  
  47.  



Что скажите?
И в коде не понятно где имя исходника и копии: $d1, $d2 - уточните пожалуйста.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB