【问题标题】:How to delete a folder in which was started as a script?如何删除作为脚本启动的文件夹?
【发布时间】:2010-05-02 21:35:09
【问题描述】:

我在文件夹 abc 中有一个 delete.php,所以我调用 localhost/abc/delete.php。当我调用localhost/abc/delete.php 时,我希望能够从服务器中删除 abc 文件夹及其所有内容。怎么做这样的事情?

【问题讨论】:

    标签: php file filesystems directory


    【解决方案1】:

    这个函数删除一个目录 所有的内容。第二个参数 是布尔值以指示函数 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' );
    

    【讨论】:

      【解决方案2】:

      试试这样的:

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

      【讨论】:

      • 这很可能不适用于 Windows 主机,因为它不允许删除正在使用的目录或文件。该脚本将$dir 作为其工作目录,并且PHP 可能会在脚本执行时保持delete.php 脚本处于打开状态。在尝试远程目录之前,您至少可能必须 chdir() 远离 $dir,即使这样,delete.php 也可能会保持锁定状态。
      • 谢谢,我没有windows盒子,所以只在linux上测试过。
      猜你喜欢
      • 2013-03-18
      • 2023-04-01
      • 2023-03-26
      • 1970-01-01
      • 2013-04-09
      • 1970-01-01
      • 2018-02-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多