2016-02-10 3 views
0

Извините за новый пост! Я еще не надеялся на комментарий к другим сообщениям.PHP: Скопируйте все содержимое каталога

У меня возникли проблемы копирования папок и это, где я начал: 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... 

Функция выполнена, но ничего не копируется.

Любые идеи о том, что может быть неправильным?

решаемых

Working solution

Наряду с

$src = "$_SERVER[DOCUMENT_ROOT]/_template/function/"; 
$dst = "$_SERVER[DOCUMENT_ROOT]/city/department/function/"; 
recurse_copy($src, $dst); 

ответ

0

Это не проверено, но я думаю, что проблема может заключаться в том, что целевой каталог не обязательно создается, прежде чем пытаться скопировать файлы на него. Кусок кода, который создает целевой каталог требует путь к папке, а не полный путь файла - следовательно, используя 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); 
} 
+0

Это сделал трюк вместе с '$ src =" $ _SERVER [DOCUMENT_ROOT]/_ template/function/";' Спасибо, кучка ! – Andreas

0

использование местных путями

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

copy работает локально на вашем сервере. Вы пытаетесь скопировать с использованием схемы HTTP, это не работает.

+0

Мой документ находится в папке/администратора, поэтому я добавил «../» линии всасывания ваших определений но теперь страница застревает в загрузке. То же самое, если я удаляю добавление (если путь всегда от root?). – Andreas

+0

См. Мои комментарии на [http://stackoverflow.com/a/35310905/5649888] – Andreas

Смежные вопросы