# mkdir

(PHP 4, PHP 5, PHP 7, PHP 8)

mkdir — 新建目录

### 说明

mkdir(
string `$directory`,
int `$permissions` = 0777,
bool `$recursive` = `false`,
?resource `$context` = `null`
): bool

尝试新建由 `directory` 指定的目录。

### 参数

`directory`

  目录的路径。

  小技巧

  如已启用fopen 包装器，在此函数中， URL 可作为文件名。关于如何指定文件名详见 fopen()。各种 wapper 的不同功能请参见 支持的协议和封装协议，注意其用法及其可提供的预定义变量。

`permissions`

  默认权限是 0777，意味着最大可能的访问权。有关权限的更多信息请阅读 chmod() 页面。

  > 注意:

  > `permissions` 在 Windows 下被忽略。

  注意也许想用八进制数指定 `permissions`，也就是说该数应以零打头。`permissions` 也会被当前的 umask 修改，可以用 umask() 来改变。

`recursive`

  如果为 `true`，还将会创建指定 `directory` 的任何父级目录，并具有相同的权限。

`context`

  上下文流（context stream） resource。

### 返回值

成功时返回 `true`， 或者在失败时返回 `false`。

> 注意:

> 如果创建的目录已存在，则视为错误，仍然返回 `false`。在尝试创建之前，使用 is_dir() 或者 file_exists() 检查目录是否已经存在。

### 错误／异常

目录已存在时，产生 `E_WARNING` 错误。

如果因为权限问题无法创建目录，导致 `E_WARNING` 错误。

### 示例

示例 #1 mkdir() 例子

`<?php
mkdir("/path/to/my/dir", 0700);
?>`

示例 #2 通过 `recursive` 参数使用 mkdir()

`<?php
// 期望的目录结构
$structure = './depth1/depth2/depth3/';
// 要创建嵌套结构，必须指定 mkdir()
// 的 $recursive 参数。
if (!mkdir($structure, 0777, true)) {
die('Failed to create directories...');
}
// ...
?>`

### 参见

- is_dir() - 判断给定文件名是否是一个目录
- rmdir() - 删除目录
- umask() - 改变当前的 umask

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open