【问题标题】:Why this function is not working? PHP为什么这个功能不起作用? PHP
【发布时间】:2016-04-19 19:26:24
【问题描述】:

这是原来的功能,效果很好……

    function delete_directory($dirname) {

  if (is_dir($dirname))
    $dir_handle = opendir($dirname);

    if (!$dir_handle)
      return false;

  while ($file = readdir($dir_handle)) {

    if ($file != "." && $file != "..") {
      if (!is_dir($dirname."/".$file))
                   unlink($dirname."/".$file);
              else
                   delete_directory($dirname.'/'.$file);
         }
   }
   closedir($dir_handle);
   rmdir($dirname);
   return true;
  }

我尝试使用大括号和不同名称制作一个版本,但它不起作用,我不确定问题出在哪里

    function borrar_directorio ($carpeta) {

  if (is_dir($carpeta)) {

    $abrir_directorio = opendir($carpeta);

    if (!$abrir_directorio) {

      return false;
    }
  }

  while ($archivo = readdir($abrir_directorio)) {

      if ($archivo != "." && $archivo != "..") {

        if (!is_dir($carpeta."/".$archivo)) {
          unlink($carpeta."/".$achivo);

        } else {

          borrar_directorio($carpeta.'/'.$archivo);
        }
      }
    }

  closedir($abrir_directorio);
  rmdir($carpeta);
  return true;
}

我错过了什么?希望你能帮帮我,先谢谢了

【问题讨论】:

  • 有什么错误吗?您的错误日志中有什么内容?
  • @JayBlanchard '为什么这个功能不起作用?我应该多花一个标志吗?还是保持原样? :D
  • @JayBlanchard 没有错误,只是没有删除目录及其文件
  • @HendraNucleo 不,请 :),我真的需要帮助
  • 那么肯定有错误。没有错误,代码不会“不起作用”。你知道你的错误日志在哪里吗?

标签: php function curly-braces


【解决方案1】:

您编写它的一个可能的问题是,如果文件夹不存在或由于权限限制或文件系统错误而无法打开,while 循环仍将运行。

以下是使用花括号编写原始脚本的方式

  if(is_dir($carpeta))
  {
    $abrir_directorio = opendir($carpeta);
  }
  if(!$abrir_directorio)
  {
    return false;
  }

  while($archivo = readdir($abrir_directorio))
  { ...

【讨论】:

  • 感谢您的回答,我将代码更改为这种方式,但我的问题仍然是拼写错误:)
【解决方案2】:

也许 scandir 会有所帮助:

public static function delTree($dir) {
    $files = array_diff(scandir($dir), array('.','..'));
    foreach ($files as $file) {
        // echo "$dir/$file \n";
        is_dir("$dir/$file")) 
            ? delTree("$dir/$file") 
            : unlink("$dir/$file");
    }
    return rmdir($dir);
}

如果此功能不起作用,请取消注释 echo,您将看到它尝试删除哪些文件。

【讨论】:

  • 感谢您的回答,我解决了我的问题,但我会尝试您的代码:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-04
  • 2019-10-06
  • 1970-01-01
  • 1970-01-01
  • 2013-06-09
相关资源
最近更新 更多