false, 'error'=>'Invalid paths']); exit; } $basename = basename($srcReal); $target = $destReal . '/' . $basename; if (is_dir($srcReal)) { $rc = mkdir($target); // simple recursive copy $it = new RecursiveIteratorIterator( new RecursiveDirectoryIterator($srcReal, FilesystemIterator::SKIP_DOTS), RecursiveIteratorIterator::SELF_FIRST ); foreach ($it as $item) { $subPath = $target . substr($item->getPathname(), strlen($srcReal)); if ($item->isDir()) mkdir($subPath); else copy($item->getPathname(), $subPath); } $ok = $rc; } else { $ok = copy($srcReal, $target); } echo json_encode(['success'=>(bool)$ok]);