mkdir用于创建目录(支持递归),rmdir仅能删除空目录;mkdir需指定路径、权限和递归选项,rmdir仅接受路径且要求目录为空,二者常需配合is_dir()、scandir()等函数使用。

mkdir 和 rmdir 是 PHP 中一对作用相反、但使用条件和能力差异明显的目录操作函数。
功能定位不同
mkdir() 用于新建目录,支持单层或递归创建多级目录;
rmdir() 只能删除空目录,无法处理含文件或子目录的非空目录。
参数与关键选项差异
mkdir() 常用三个参数:
- 第一个:目录路径(字符串)
- 第二个:权限模式(如 0755),默认受系统 umask 影响
- 第三个:是否递归创建(布尔值,设为 true 才能自动建父目录)
例如:mkdir('logs/error/2026', 0755, true) 可一次性创建 logs、error、2026 三级目录。
rmdir() 只接受一个参数——目录路径,且要求该目录必须为空,否则调用失败并返回 false。
错误处理逻辑不一样
mkdir() 创建失败时通常因权限不足、父目录不存在(未启用递归)、路径非法等原因,需配合 is_dir() 和 file_exists() 预判;
rmdir() 删除失败基本只有两种可能:目录不存在,或目录非空。它不会自动清空内容,也不能加选项跳过检查。
实际使用中常搭配的函数
单独用 rmdir() 很难满足真实需求,往往要组合其他操作:
- 先用 scandir() 或 opendir() + readdir() 遍历并删除内部文件
- 再调用 rmdir() 删除空壳
- 或直接改用系统命令 exec('rm -rf 目录名')(不推荐线上环境随意启用)
而 mkdir() 更常与 is_dir() 配合,避免重复创建报错:if (!is_dir($path)) { mkdir($path, 0755, true); }
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











