我不明白我的代码中的问题在哪里。我试图在目录上实现另一个副本,但代码循环
感谢您的帮助
例如,我想将法语目录复制到名为spanish
的新目录中ps:只是信息:在法语目录中还有目录和文件 那里的结果是:
french
english
spanish
----->french
----->english
----->spanish
--------->french
--------->english
--------->spanish
------------>french
------------>english
------------>spanish
...
正确的结果是:
french
english
spanish
代码:
function osc_smartCopy($source, $dest) {
mkdir($dest, 0755);
foreach (
$iterator = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($source, RecursiveDirectoryIterator::SKIP_DOTS),
RecursiveIteratorIterator::SELF_FIRST) as $item) {
if ($item->isDir()) {
mkdir($dest . DIRECTORY_SEPARATOR . $iterator->getSubPathName());
} else {
copy($item, $dest . DIRECTORY_SEPARATOR . $iterator->getSubPathName());
}
}
}
和
//default language drectory ==> French
$lng_default_directory_query = osc_db_query("select directory
from " . TABLE_LANGUAGES . "
where code = '" . DEFAULT_LANGUAGE . "'
");
$lng_default_directory = osc_db_fetch_array($lng_default_directory_query);
$lng_default_directory = $lng_default_directory['directory'];
// ---------------------------------------------
// -- Copy the new language in admin directory
// ---------------------------------------------
//$directory ==> spanish
$source = DIR_FS_ADMIN . DIR_WS_LANGUAGES . $lng_default_directory;
$dest = DIR_FS_ADMIN . DIR_WS_LANGUAGES . $directory;
print_r($source);
print_r('<br />'.$dest);
if (is_dir($source)) {
osc_smartCopy($source, $dest);
} else {
echo 'NO EXIST';
}
// ---------------------------------------------
// copy the files in the language admin directory
// ---------------------------------------------
$source_admin = DIR_FS_ADMIN . DIR_WS_LANGUAGES . $lng_default_directory.'.php';
$dest_admin = DIR_FS_ADMIN . DIR_WS_LANGUAGES . $directory.'.php';
if (file_exists($source_admin)) {
copy($source_admin, $dest_admin);
chmod($dest_admin, 0644);
} else {
osc_redirect(osc_href_link(FILENAME_LANGUAGES));
}