2012-10-07 90 views
0

下面是我使用递归删除文件夹和文件PHP递归删除文件夹

function rmdir_recursively($dir) { 
    if (!is_dir($dir) || is_link($dir)) return unlink($dir); 
     foreach (scandir($dir) as $file) { 
      if ($file == '.' || $file == '..') continue; 
      if (!rmdir_recursively($dir . DIRECTORY_SEPARATOR . $file)) { 
       chmod($dir . DIRECTORY_SEPARATOR . $file, 0777); 
       if (!rmdir_recursively($dir . DIRECTORY_SEPARATOR . $file)) return false; 
      }; 
     } 
     return rmdir($dir); 
} 

的问题是,当我发送的内部根某个文件夹,它会删除此文件夹功能。但是,当我发根文件夹本身一样,

rmdir_recursively("./"); 

它返回象下面

PHP Warning: unlink(.//wp/wp-admin/network) [<a href='function.unlink'>function.unlink</a>]: No such file or directory in /home/vefa/public_html/deploy.php on line 52 
[07-Oct-2012 02:16:09] PHP Warning: unlink(.//wp/wp-admin/user) [<a href='function.unlink'>function.unlink</a>]: No such file or directory in /home/vefa/public_html/deploy.php on line 52 
[07-Oct-2012 02:16:09] PHP Warning: unlink(.//wp/wp-content) [<a href='function.unlink'>function.unlink</a>]: No such file or directory in /home/vefa/public_html/deploy.php on line 52 
[07-Oct-2012 02:16:09] PHP Warning: unlink(.//wp/wp-content/plugins) [<a href='function.unlink'>function.unlink</a>]: No such file or directory in /home/vefa/public_html/deploy.php on line 52 
[07-Oct-2012 02:16:09] PHP Warning: unlink(.//wp/wp-content/plugins/akismet) [<a href='function.unlink'>function.unlink</a>]: No such file or directory in /home/vefa/public_html/deploy.php on line 52 

我缺少的是一堆错误?

+0

为什么不在1行:'exec('rm -fr $ path');' – JvdBerg

+0

@JvdBerg 2问题:它可以在共享服务器上工作吗?以及如何从删除中排除脚本本身? – heron

+0

大多数共享主机允许你这样做。 – JvdBerg

回答

1

你说你要发送rmdir_recursively("./");

但看看代码,您稍后调用rmdir_recursively($dir . DIRECTORY_SEPARATOR . $file)

这意味着您将试图消除“.//”中的文件。

这就是为什么你的错误信息中包含unlink(.//wp/wp-admin/user)

使用rmdir_recursively(".");代替。

+0

http://chat.stackoverflow.com/rooms/17593/room – heron