【发布时间】:2010-05-02 21:35:09
【问题描述】:
我在文件夹 abc 中有一个 delete.php,所以我调用 localhost/abc/delete.php。当我调用localhost/abc/delete.php 时,我希望能够从服务器中删除 abc 文件夹及其所有内容。怎么做这样的事情?
【问题讨论】:
标签: php file filesystems directory
我在文件夹 abc 中有一个 delete.php,所以我调用 localhost/abc/delete.php。当我调用localhost/abc/delete.php 时,我希望能够从服务器中删除 abc 文件夹及其所有内容。怎么做这样的事情?
【问题讨论】:
标签: php file filesystems directory
这个函数删除一个目录 所有的内容。第二个参数 是布尔值以指示函数 if 它应该删除目录或仅删除 内容
function rmdir_r ( $dir, $DeleteMe = TRUE )
{
if ( ! $dh = @opendir ( $dir ) ) return;
while ( false !== ( $obj = readdir ( $dh ) ) )
{
if ( $obj == '.' || $obj == '..') continue;
if ( ! @unlink ( $dir . '/' . $obj ) ) rmdir_r ( $dir . '/' . $obj, true );
}
closedir ( $dh );
if ( $DeleteMe )
{
@rmdir ( $dir );
}
}
//use like this:
rmdir_r( 'abc' );
【讨论】:
试试这样的:
function deleteDir($dir) {
if (!is_dir($dir)) return unlink($dir);
foreach (scandir($dir) as $item) {
if ($item == '.' || $item == '..') continue;
if (!deleteDir($dir.'/'.$item)) return false;
}
return rmdir($dir);
}
$dir = substr($_SERVER['SCRIPT_FILENAME'], 0, strrpos($_SERVER['SCRIPT_FILENAME'], '/'));
deleteDir($dir);
【讨论】:
$dir 作为其工作目录,并且PHP 可能会在脚本执行时保持delete.php 脚本处于打开状态。在尝试远程目录之前,您至少可能必须 chdir() 远离 $dir,即使这样,delete.php 也可能会保持锁定状态。