在php中删除文件夹

在php中删除文件夹,php,Php,我正在尝试删除文件夹: 函数删除($path) { if(is_dir($path)==true) { $files=array_diff(scandir($path),array('.','..); foreach($files作为$file) { 删除(realpath($path)。'/.$file); } 返回rmdir($path); } else if(is_file($path)==true) { 返回取消链接($path); } 返回false; } 删除(“tmp”); 它可以

我正在尝试删除文件夹:

函数删除($path) { if(is_dir($path)==true) { $files=array_diff(scandir($path),array('.','..); foreach($files作为$file) { 删除(realpath($path)。'/.$file); } 返回rmdir($path); } else if(is_file($path)==true) { 返回取消链接($path); } 返回false; } 删除(“tmp”);
它可以在我的Xampp服务器上工作,但不能在我的Web服务器上工作。我已将文件夹及其包含的文件的权限更改为0777。所以它应该是可写的(或者在本例中是可擦除的),但什么也不会发生。我甚至尝试将文件夹的绝对路径作为函数的参数,但仍然没有。有什么想法吗?

它是否返回false?或者它返回true,但实际上不删除

通常我只是猜测这是一个权限问题

尝试使用PHP中的mkdir创建一个文件夹,使PHP成为所有者(可以这么说),并尝试使用函数删除该文件夹

如果有效,则是权限/所有者问题。

使用此选项:

function delTree($dir)
{
 $files = glob( $dir . '*', GLOB_MARK );
 foreach( $files as $file 
 {
  if( is_dir( $file ) )
   delTree( $file );
  else
   @unlink( $file );
 }

 if( is_dir($dir) ) rmdir( $dir );
};
你可以试试这个代码

<?php
$files = glob('application/*'); foreach($files as $file){  if(is_file($file)) unlink($file);  }
?>

可能有些文件是用php打开的,比如fopen,此时它不会删除文件夹或目录。当我试图删除一个文件/文件夹时,我也遇到了同样的问题

<?php
function delete_directory($target) {
         if (is_dir($target))
           $dir_handle = opendir($target);
     if (!$dir_handle)
          return false;
     while($file = readdir($dir_handle)) {
           if ($file != "." && $file != "..") {
                if (!is_dir($dirname."/".$file))
                     unlink($dirname."/".$file);
                else
                     delete_directory($target.'/'.$file);
           }
     }
     closedir($dir_handle);
     rmdir($target);
     return true;
}

?>


希望这有帮助。

尝试这行代码删除一个或多个文件夹文件 我希望这对你有帮助

function deleteAll($str) {
        if (is_file($str)) {
            return unlink($str);
        }
        elseif (is_dir($str)) {
            $scan = glob(rtrim($str,'/').'/*');
            foreach($scan as $index=>$path) {
                $this->deleteAll($path);
            }            
            return @rmdir($str);
        }
    }

有错误信息吗?您应该会得到一些。尝试在顶部添加
ini\u集('display\u errors',1);错误报告(E_全部)并查看是否有任何错误决定显示。否。还是没什么。只是一些我期待的通知信息。我试过这样做:if(mkdir(“tmp”,0777))echo('works');else-echo('nope');如果(删除('tmp'))回音('yes');else echo(‘否’);但什么也没发生。它没有生成文件夹。它没有显示任何内容。你确定你的主机允许这些功能吗?是的,我只是尝试创建一个新的php文件,并使用新的php文件创建一个文件夹。成功了。有趣的是,尽管我使用了mkdir(“tmp”,0777),但它创建了一个带有0755任务的tmp文件夹,这是默认的。我是否使用了错误的mkdir函数?权限值是否应该用引号括起来?
<?php
function delete_directory($target) {
         if (is_dir($target))
           $dir_handle = opendir($target);
     if (!$dir_handle)
          return false;
     while($file = readdir($dir_handle)) {
           if ($file != "." && $file != "..") {
                if (!is_dir($dirname."/".$file))
                     unlink($dirname."/".$file);
                else
                     delete_directory($target.'/'.$file);
           }
     }
     closedir($dir_handle);
     rmdir($target);
     return true;
}

?>
function deleteAll($str) {
        if (is_file($str)) {
            return unlink($str);
        }
        elseif (is_dir($str)) {
            $scan = glob(rtrim($str,'/').'/*');
            foreach($scan as $index=>$path) {
                $this->deleteAll($path);
            }            
            return @rmdir($str);
        }
    }