PHP的mkdir()函数用于创建目录,其语法结构和参数详解如下:
1. 语法结构
bool mkdir(string $pathname, int $mode = 0777, bool $recursive = false, resource $context = null)
返回值:成功返回
true,失败返回false
2. 参数详解
(1) $pathname(必需)
作用:指定要创建的目录路径,支持相对路径或绝对路径
示例:
mkdir('new_folder'); // 相对路径(当前目录下)
mkdir('/var/www/html/new'); // 绝对路径(2) $mode(可选)
作用:设置目录权限,采用八进制数表示,默认
0777(最大权限)权限组成:
1:执行权限2:写权限4:读权限组合示例:
7=4+2+1(读+写+执行),5=4+1(读+执行)格式:
0ABC(A:所有者权限,B:用户组权限,C:其他用户权限)权限值:
注意:Windows系统会忽略此参数
(3) $recursive(可选)
作用:是否递归创建父目录,默认
falsefalse:仅创建最终目录,若父目录不存在则失败。true:自动创建所有缺失的父目录示例:
mkdir('a/b/c', 0755, true); // 递归创建a/b/c目录(4) $context(可选)
作用:指定流上下文(如FTP、SSL等特殊场景),通常无需使用
3. 常见问题与示例
(1) 基础创建
if (!is_dir('logs')) {
mkdir('logs', 0755); // 创建logs目录,权限755
}(2) 递归创建多级目录
mkdir('uploads/2025/08', 0777, true); // 自动创建uploads和2025子目录:ml-citation{ref="3,8" data="citationList"}(3) 动态目录(按日期)
$dir = 'backups/' . date('Y-m-d');
mkdir($dir, 0700, true); // 创建当日备份目录,权限700:ml-citation{ref="3" data="citationList"}(4) 错误处理
if (!mkdir('protected', 0600)) {
die("目录创建失败,请检查权限!");
}4. 注意事项
权限限制:某些服务器(如共享主机)可能限制
0777权限,需改用0755等安全值目录存在性检查:建议先通过
is_dir()判断目录是否已存在Windows兼容性:
$mode参数在Windows无效,但需保留语法兼容性