2013-07-31 3 views
2

Я хотел бы скопировать файлы с удаленного сервера с аналогичной структурой в файлы на моем сервере с той же структурой.файлы каталогов файлов foreach loop

include "../arrays.php"; 
foreach ($citycode as $city) { 
$source = "http://www.remoteserver.com/data/{$city}/"; 
$dest = "/alltxts/{$city}/"; 

// EVERYTHING FROM HERE ONWARDS RUNS PERFECTLY, THE PROBLEM IS PROBABLY ABOVE. 
function copyr($source, $dest) 
{ 
// Simple copy for a file 
if (is_file($source)) { 
    chmod($dest, 777); 
    return copy($source, $dest); 
} 

// Make destination directory 
if (!is_dir($dest)) { 
    mkdir($dest); 
} 

chmod($dest, 777); 

// Loop through the folder 
$dir = dir($source); 
while (false !== $entry = $dir->read()) { 
    // Skip pointers 
    if ($entry == '.' || $entry == '..') { 
     continue; 
    } 

    // Deep copy directories 
    if ($dest !== "$source/$entry") { 
     copyr("$source/$entry", "$dest/$entry"); 
    } 
    } 

// Clean up 
$dir->close(); 
return true; 
} 
} 

Код для копирования файлов прекрасно работает, когда я использую конкретный $ citycode как $ city. Однако, когда я использую массив, чтобы поймать все названия городов одной строкой, это не сработает. Есть идеи? Буду признателен за любую помощь, спасибо!

+1

Посмотрите на ['DirectoryIterator'] (http://www.php.net/manual/en/class.directoryiterator.php). –

ответ

0

Вы ищете:

$source = "http://www.remoteserver.com/data/{$city}/"; 
$dest = "/alltxts/{$city}/"; 

file_put_contents($dest, file_get_contents($source)); 

Убедитесь, что у вас есть необходимые разрешения для сохранения файлов в /alltxts/'. Также ведущий / выглядит странно для меня. Вы имеете в виду что-то вроде alltexts/ (относительный путь)?

+0

Спасибо за это. Я обновил свой вопрос, чтобы вы увидели весь код. При запуске его для определенного имени города нет проблем. Создается новый каталог, и файлы копируются без видимых (chmod 777). – user2638001