【发布时间】:2011-02-21 17:21:19
【问题描述】:
我在 WINDOWS 操作系统和 PHP 脚本中使用以下代码,其中最初我采用两个文件夹结构的差异,然后需要将输出复制到其他文件夹。这是下面的代码..
$source = '/var/www/html/copy1';
$mirror = '/var/www/html/copy2';
function scan_dir_recursive($dir, $rel = null) {
$all_paths = array();
$new_paths = scandir($dir);
foreach ($new_paths as $path) {
if ($path == '.' || $path == '..') {
continue;
}
if ($rel === null) {
$path_with_rel = $path;
} else {
$path_with_rel = $rel . DIRECTORY_SEPARATOR . $path;
}
$full_path = $dir . DIRECTORY_SEPARATOR . $path;
$all_paths[] = $path_with_rel;
if (is_dir($full_path)) {
$all_paths = array_merge(
$all_paths, scan_dir_recursive($full_path, $path_with_rel)
);
}
}
return $all_paths;
}
$diff_paths = array_diff(
scan_dir_recursive($mirror),
scan_dir_recursive($source)
);
/*$diff_path = array_diff($mirror,$original);*/
echo "<pre>Difference ";print_r($diff_paths);
Difference of Folders Array
(
[4] => New Folder (2)
[5] => New Folder (2)/New Folder
[6] => New Folder (2)/New Folder/New Folder
[7] => New Folder (2)/New Folder/New Folder/New Text Document (2).txt
[8] => New Folder (2)/New Folder/New Folder/New Text Document.txt
)
foreach($diff_paths as $path)
{
echo $source1 = "var/www/html/copy2/".$path;
echo "<br>";
$des = "var/www/html/copy1/".$path;
copy_recursive_dirs($source1, $des);
}
function copy_recursive_dirs($dirsource, $dirdest)
{
$dir_handle=opendir($dirsource);
mkdir($dirdest,0777);
while(false!==($file=readdir($dir_handle)))
{/*echo "<pre>";
print_r($file);*/
if($file!="." && $file!="..")
{
if(is_dir($dirsource.DIRECTORY_SEPARATOR.$file))
{
//Copy the file at the same level in the destination folder
copy_recursive_dirs($dirsource.DIRECTORY_SEPARATOR.$file, $dirdest.DIRECTORY_SEPARATOR.$file);
}
else{
//Copy the dir at the same lavel in the destination folder
copy ($dirsource.DIRECTORY_SEPARATOR.$file, $dirdest.DIRECTORY_SEPARATOR.$file);
}
}
}
closedir($dir_handle);
return true;
}
每当我执行脚本时,我都会得到不同的输出,但不会根据代码在第二个文件夹中获得另一个副本...请帮助我纠正...
更新 我只想将差异复制到 其他文件夹,如果有其他文件夹 请帮我....
更新: 我收到这些错误,
( ! ) 警告: opendir(var/www/html/copy2/新建文件夹 (2)) [function.opendir]: 失败 打开目录:没有这样的文件或目录 /var/www/html/pranav_test/syncss.php 在第 96 行
( ! ) 警告:mkdir() [function.mkdir]:没有这样的文件或 目录在 /var/www/html/pranav_test/syncss.php 在第 99 行
( ! ) 警告:readdir():提供 参数不是有效的目录 资源在 /var/www/html/pranav_test/syncss.php 在第 104 行
( ! ) 警告:closedir():已提供 参数不是有效的目录 资源在 /var/www/html/pranav_test/syncss.php 在第 122 行
【问题讨论】:
-
@Col。弹片 什么样的人你没有任何常识,经过几次尝试调试后有人来问这里有问题......我可以帮我帮助我,否则不要灰心其他人不帮助我。 ..
-
你是怎么尝试的?尝试过哪些调试技术?
-
@Col。弹片我试图简单地复制没有工作的不同文件夹,我尝试 id 迭代它检查输出是否是目录,如果它是 mkdir 应该执行.. 和许多其他方式.. 但这些都不适合我...
-
我不是在乞求任何人。我来这里是为了学习,解决我正在经历的问题,如果你觉得它是在乞求,那么我是一个最好的乞讨者,可以像我一样学习可以.... :)
-
嗯,消息很清楚。检查文件路径。在第一条消息中它说
var/,而不是/var,它应该是