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。
最佳实践
- 错误处理:始终检查 mkdir 的返回值。
- 权限:为安全设置适当的权限。
- 存在性检查:首先验证目录是否存在。
- 递归:使用递归模式创建嵌套目录。
- 绝对路径:优先使用绝对路径以保证可靠性。
来源
本教程介绍了 PHP mkdir 函数,并通过实际示例展示了在不同场景下创建目录。
作者
列出 所有 PHP 文件系统函数。