mkdir

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

mkdir创建目录

描述

mkdir(
    字符串 $directory,
    整数 $permissions = 0777,
    布尔值 $recursive = false,
    ?资源 $context = null
): 布尔值

尝试创建由 directory 指定的目录。

参数

directory

目录路径。

提示

如果启用了 fopen 包装器,则 URL 可以用作此函数的文件名。有关如何指定文件名的更多详细信息,请参见 fopen()。有关各种包装器功能、使用注意事项以及它们可能提供的任何预定义变量的信息,请参见 支持的协议和包装器

permissions

权限默认情况下为 0777,这意味着最广泛的访问权限。有关权限的更多信息,请阅读 chmod() 页面上的详细信息。

注意:

permissions 在 Windows 上被忽略。

请注意,您可能希望将 permissions 指定为八进制数,这意味着它应该有一个前导零。permissions 也受当前 umask 的修改,您可以使用 umask() 更改它。

recursive

如果为 true,则将创建 directory 指定的任何父目录,并具有相同的权限。

context

一个 上下文流 资源

返回值

成功时返回 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...');
}

// ...
?>

参见

添加注释

用户贡献的注释 5 个注释

jack dot sleight at gmail dot com
14 年前
在使用递归参数时,请记住,如果您在 mkdir() 之后使用 chmod() 来设置模式,而不希望它被 uchar() 的值修改,则需要对所有创建的目录调用 chmod()。例如

<?php
mkdir
('/test1/test2', 0777, true);
chmod('/test1/test2', 0777);
?>

可能会导致 "/test1/test2" 的模式为 0777,但 "/test1" 仍然具有来自 mkdir() 调用的 0755 模式。您需要这样做

<?php
mkdir
('/test1/test2', 0777, true);
chmod('/test1', 0777);
chmod('/test1/test2', 0777);
?>
aulbach at unter dot franken dot de
25 年前
这是 Stig Bakken 的注释

您目录的模式受当前 umask 影响。它将最终
具有 (<mkdir-mode> 以及 (not <umask>))。如果您想创建一个
公开可读的目录,请执行以下操作

<?php
$oldumask
= umask(0);
mkdir('mydir', 0777); // 或者甚至 01777 以便设置粘滞位
umask($oldumask);
?>
Protik Mukherjee
19 年前
mkdir、文件读写、与 Fedora 3 相关的权限说明////
如果您使用的是 Fedora 3 并遇到权限问题,最好检查系统上是否启用了 SElinux。它添加了额外的安全层,因此即使 PHP 具有 777 权限,它也无法写入该文件夹。我花了将近一周的时间才解决这个问题!

如果您不确定,请搜索 SElinux 或“禁用 SElinux”,这可能是解决方案!祝好运!
julius - grantzau - c-o-m
13 年前
请记住使用 clearstatcache()

... 在使用文件系统函数时。

否则,例如,您可能会在删除文件夹(使用 rmdir)后立即创建文件夹(使用 mkdir)时出错。
chelidze dot givia at gmail dot com
1 年前
使用 mkdir() 创建文件时,默认根目录将是 DocumentRoot(在 XAMPP 中)本身。

C:\xampp\htdocs\project/includes/something.php

如果您在 something.php 中使用 mkdir("myfile"),PHP 不会在 includes 中创建文件夹,而是会在 project 文件夹中创建它
To Top