使用mkdir()函数可创建目录,需设置合理权限如0755,避免0777,结合is_dir()检查存在性,推荐递归创建多级目录并处理错误,敏感目录应置于Web根外。

在PHP中创建目录主要使用 mkdir() 函数,配合适当的权限设置可以确保目录成功生成并具备所需访问控制。下面详细介绍创建目录的函数用法和权限设置方法。
mkdir() 函数的基本用法
mkdir() 是PHP内置函数,用于创建新目录。语法如下:
bool mkdir ( string $pathname [, int $mode = 0777 [, bool $recursive = false [, resource $context ]]] )参数说明:
- $pathname:要创建的目录路径(必填)
- $mode:目录权限,默认为0777(仅在不支持chmod的系统上有效)
- $recursive:是否允许递归创建多级目录
- $context:上下文流选项(高级用法,一般可忽略)
示例:
立即学习“PHP免费学习笔记(深入)”;
// 创建单层目录 mkdir("uploads"); // 递归创建多级目录 mkdir("uploads/images/thumbs", 0755, true);目录权限设置详解
Linux/Unix系统中,权限由三位八进制数表示,如0755、0777等:
- 第一位(所有者):读(4) + 写(2) + 执行(1)
- 第二位(组用户):同上
- 第三位(其他用户):同上
常用权限值:
- 0755:所有者可读写执行,组和其他用户只读执行(推荐Web目录使用)
- 0777:完全开放权限,存在安全风险,慎用
- 0700:仅所有者有全部权限,适合私密目录
注意:Windows系统会忽略权限设置,实际权限由操作系统控制。
检查与错误处理
创建目录前应检查是否存在,避免重复操作或报错:
if (!is_dir("uploads")) { if (mkdir("uploads", 0755, true)) { echo "目录创建成功"; } else { echo "目录创建失败"; } } else { echo "目录已存在"; }也可以通过 error_get_last() 获取详细错误信息:
if (!mkdir("test", 0600)) { $error = error_get_last(); echo "错误: " . $error['message']; }安全建议与最佳实践
- 避免使用0777权限,优先选择0755或更严格的权限
- 敏感目录(如配置文件、缓存)应放在Web根目录之外
- 创建目录后可用 chmod() 单独调整权限
- 使用绝对路径更稳定,尤其是涉及定时任务或CLI运行时
基本上就这些。掌握 mkdir() 的使用和合理设置权限,就能在PHP项目中灵活管理目录结构。











