当前位置: 首页 > 知识库问答 >
问题:

rmdir一个空目录返回"目录不空"错误-PHP

谢鸿飞
2023-03-14

我正在创建一个允许调整gif大小的小类。为此,我创建了一个包含所有帧的临时目录,调整它们的大小,然后再次创建gif。

创建gif后,我想删除我的临时目录。但一旦我的所有文件都被删除,我就会出现以下错误:

警告:目录不为空

这是我的密码:

private function remove_temp_dir() {
    $handle = opendir( $this->temp_folder_path );

    foreach ( $this->frames as $path => $duration ) {
        unlink( $path );  
    }
    
    closedir( $handle );

    var_dump( scandir( $this->temp_folder_path ) );
    var_dump( $this->temp_folder_path . 'temp-102.gif' );
    var_dump( file_exists( $this->temp_folder_path . 'temp-102.gif' ) );
    
    rmdir( $this->temp_folder_path );
}

这是我得到的:

正如您所看到的,没有隐藏文件,因为scandir没有返回任何文件<如你所见,我尝试了这个解决方案,但没有成功
我可以手动删除它,一旦代码完成,里面就没有文件了
我可以在以后的代码中删除它(一旦我的页面重新加载等…)
我尝试了一个sleep()它不起作用。

有关其他信息:

  • 我用这个库将GIF解码成几个图像。
  • 我用这个代码来调整图像的大小。

谢谢,

共有1个答案

斜和硕
2023-03-14

要删除非空目录,应使用递归目录删除函数。

public function rrmdir($path) {
    $iterator = new DirectoryIterator($path);

    foreach ($iterator as $fileInfo) {
        if ($fileInfo->isDot() || !$fileInfo->isDir()) {
            continue;
        }
        rrmdir($fileInfo->getPathname());
    }
    $files = new FilesystemIterator($path);

    /* @var SplFileInfo $file */
    foreach ($files as $file) {
        unlink($file->getPathname());
    }

    return rmdir($path);
}
 类似资料:
  • 和 mkdir 命令(创建空目录)恰好相反,rmdir(remove empty directories 的缩写)命令用于删除空目录,此命令的基本格式为: [root@localhost ~]# rmdir [-p] 目录名 -p 选项用于递归删除空目录。 【例 1】 [root@localhost ~]#rmdir cangls 就这么简单,命令后面加目录名称即可,但命令执行成功与否,取决于要删

  • 我有一个网站,有一个资产目录。有时候我需要删除整个文件夹,以前在AWS上我有一个EC2和一个EBS存储,它工作得很好。 我现在正在测试EFS以跨多个实例共享资产。文件将被删除,但当它要删除目录时,会抛出一条警告,说明目录不是空的: 错误[警告]:rmdir(/path/):目录不为空 在查看文件系统时,目录是空的,因此我只能假设存在一些延迟。我已经加入了一个sleep函数,看看它是否作为一个测试修

  • 如果使用此功能删除目录中的所有文件。 但是每当我这样做时,我都会收到这个错误消息: 警告:rmdir(directory/12)[function.rmdir]:delete_文件中没有这样的文件或目录。php “directory/12”是我要删除的目录的正确名称。我不明白为什么它说它不存在,因为它存在!奇怪的是,即使我收到了错误信息,目录还是被删除了。 所以我在for循环之前添加了一行代码,它

  • 我正在尝试创建一个列表,列出在FTP服务器上的文件夹中找到的所有文件名。完整目录与登录凭据一起保存在设置数据库表中。它连接到FTP区域很好,我可以上传/下载文件。 这是我从文件夹中获取文件的代码。 我遇到的问题是,当前我试图搜索的文件夹是空的,但它找到了2个文件。 为什么会这样? 中的值是 这是我在FileZilla中打开它时的文件夹-它肯定是一个空文件夹。 如何查看系统文件中的所有文件并将其放入

  • 问题内容: 在我的Node应用程序中,我需要删除一个包含一些文件的目录,但仅适用于空目录。我怎样才能做到这一点? 问题答案: 为此有一个名为(https://npmjs.org/package/rimraf)的模块。它提供的功能与 异步 用法: 同步 使用情况:

  • 试图读取一个空的镶木地板目录,得到这个错误 无法指定拼花地板的架构。必须手动指定 我的代码 尝试处理scala尝试和定期检查空目录 任何想法