在php中删除文件夹

Posted

技术标签:

【中文标题】在php中删除文件夹【英文标题】:Delete folder in php 【发布时间】:2011-04-07 13:56:49 【问题描述】:

我正在尝试删除文件夹using this script:

函数删除($path)

    if (is_dir($path) === true)
    
        $files = array_diff(scandir($path), array('.', '..'));

        foreach ($files 作为 $file)
        
                删除(realpath($path) . '/' . $file);
        

        返回 rmdir($path);
    

    否则 if (is_file($path) === true)
    
        返回取消链接($路径);
    

    返回假;


删除('tmp');

它适用于我的 Xampp 服务器,但不适用于我的网络服务器。我已将文件夹及其包含的文件的权限更改为 0777。所以它应该是可写的(或者在这种情况下是可擦除的)但没有任何反应。我什至尝试将文件夹的绝对路径作为函数的参数,但仍然没有。有什么想法吗?

【问题讨论】:

任何错误信息?你应该得到一些。 尝试在顶部添加ini_set('display_errors', 1); error_reporting(E_ALL);,看看是否会出现任何错误。 没有。依然没有。只是一些我期待的通知消息。但它们并不相关。 【参考方案1】:

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

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);
        
    

【讨论】:

【参考方案2】:

试试这样的。

<?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;


?>

希望这会有所帮助。

【讨论】:

【参考方案3】:

可能有些文件是用 php 像 fopen 打开的,那个时候它不会删除文件夹或目录。我尝试删除文件/文件夹时遇到了同样的问题

【讨论】:

【参考方案4】:

你可以试试这个代码

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

或者,

   function viewDir($path) 
    return is_file($path) ?
            @unlink($path) :
            array_map(__FUNCTION__, glob($path.'/*')) == @rmdir($path);

$dir=$_SERVER["DOCUMENT_ROOT"]."/xxxx/xxxx";
echo $dir;
viewDir($dir);

【讨论】:

【参考方案5】:

使用这个:

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 );
;

【讨论】:

【参考方案6】:

它返回 false 吗?或者它返回 true 但实际上并没有删除?

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

尝试使用 PHP 中的 mkdir 创建一个文件夹,以便 PHP 是所有者(可以这么说)并尝试使用您的函数将其删除。

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

【讨论】:

我试过这个:if(mkdir("tmp", 0777)) echo('works');否则回声(“不”);如果(删除('tmp'))回声('是');否则回声('否');但什么也没有发生。它不是在制作文件夹。它什么也没显示。 您确定您的主机允许这些功能吗? 是的,我刚刚尝试创建一个新的 php 文件并使用新的 php 文件创建一个文件夹。有效。有趣的是,尽管我使用了 mkdir("tmp",0777) 它创建了一个具有 0755 权限的 tmp 文件夹,这是默认的。我是不是用错了 mkdir 函数?权限值应该用引号引起来吗?

以上是关于在php中删除文件夹的主要内容,如果未能解决你的问题,请参考以下文章

PHP删除链接从文件夹中取消链接文件但不从MSSQL表中删除行

如何从主页中删除 index.php 并从其他 php 文件中删除 .php 扩展名

阿里云oss php 删除文件

如何使用PHP从其他目录中删除文件?

删除PHP配置文件中的注释行

PHP删除TXT文本内容