ZetCode

PHP mkdir 函数

最后修改于 2025 年 4 月 3 日

PHP 的 mkdir 函数以指定的权限创建一个新目录。它对于 PHP 应用程序中的文件系统操作至关重要。

基本定义

mkdir 函数尝试创建由 pathname 指定的目录。成功时返回 true,失败时返回 false。

语法:mkdir(string $directory, int $permissions = 0777, bool $recursive = false, resource $context = null): bool。该函数支持递归目录创建。

基本 mkdir 示例

这展示了 mkdir 创建单个目录的最简单用法。

basic_mkdir.php
<?php

declare(strict_types=1);

$dir = "new_directory";

if (mkdir($dir)) {
    echo "Directory created successfully";
} else {
    echo "Failed to create directory";
}

这会在当前工作目录中创建“new_directory”。如果未指定,将使用默认权限 (0777)。

指定权限

创建目录时可以设置特定权限。

mkdir_permissions.php
<?php

declare(strict_types=1);

$dir = "secure_dir";
$permissions = 0750; // Owner: rwx, Group: r-x, Others: ---

if (mkdir($dir, $permissions)) {
    echo "Secure directory created";
} else {
    echo "Directory creation failed";
}

这会创建一个具有受限权限的目录。请注意,实际权限可能会受到 umask 设置的影响。

递归目录创建

recursive 参数允许一次调用创建嵌套目录。

recursive_mkdir.php
<?php

declare(strict_types=1);

$path = "parent/child/grandchild";

if (mkdir($path, 0777, true)) {
    echo "Directory tree created";
} else {
    echo "Failed to create directories";
}

如果不存在,这将创建所有三个目录(父目录、子目录、孙目录)。如果没有递归模式,如果父目录不存在,这将失败。

检查目录是否存在

在创建目录之前检查它是否存在是一个好习惯。

mkdir_exists.php
<?php

declare(strict_types=1);

$dir = "new_folder";

if (!file_exists($dir)) {
    if (mkdir($dir)) {
        echo "Directory created";
    } else {
        echo "Creation failed";
    }
} else {
    echo "Directory already exists";
}

这可以防止在尝试创建现有目录时出现错误。file_exists 检查对于健壮的代码很重要。

使用 context 参数

context 参数允许指定流 context 选项。

mkdir_context.php
<?php

declare(strict_types=1);

$dir = "context_dir";
$context = stream_context_create();

if (mkdir($dir, 0777, false, $context)) {
    echo "Directory created with context";
} else {
    echo "Context creation failed";
}

这展示了 context 的基本用法,尽管通常你会设置特定的流选项。对于本地文件系统操作,很少需要 context。

最佳实践

来源

PHP mkdir 文档

本教程介绍了 PHP mkdir 函数,并通过实际示例展示了在不同场景下创建目录。

作者

我的名字是 Jan Bodnar,我是一名热情的程序员,拥有丰富的编程经验。我自 2007 年以来一直在撰写编程文章。至今,我已撰写了 1,400 多篇文章和 8 本电子书。我在编程教学方面拥有十多年的经验。

列出 所有 PHP 文件系统函数