PHP-функция mkdir()

Функция PHP mkdir() применяется для создания каталога, заданного в pathname. Каталог создается со значением режима доступа по умолчанию 0777.

Синтаксис:

bool mkdir ( string $pathname [, int $mode = 0777 [, bool $recursive = false [, resource $context ]]] )

Пример использования функции mkdir ():

<?php
mkdir("stories");
?>

Возвращаемое значение. Эта функция возвращает значение TRUE в случае удачного завершения или FALSE при возникновении ошибки.

Дополнительная информация. Эта функция выдает ошибку уровня E_WARNING, если директория уже существует. Предупреждение также выдается, если соответствующие разрешения предотвращают создание каталога и PHP mkdir не работает.

Версия PHP. Функция mkdir () доступна в PHP 4, PHP 5, PHP 7.

Релевантные функции. is_dir() - указывает, является ли имя файла каталогом. rmdir() – удаляет каталог.

Параметры

pathname

Параметр pathname используется для указания пути к каталогу. Это обязательный параметр.

mode

Параметр mode задает режим доступа к директории. Значением по умолчанию является 0777, что обеспечивает максимально возможный доступ. Этот параметр является необязательным.

Необходимо помнить, что параметр mode игнорируется в Windows.

recursive

Разрешает создание вложенных каталогов в указанном пути. Этот параметр является необязательным. Он был добавлен в PHP 5.

context

Используется для указания контекста дескриптора файла. Контекст — это набор опций, которые могут изменять поведение потока. Он был добавлен в PHP 5. Этот параметр PHP mkdir() также является необязательным.

Примеры

Примеры использования функции mkdir ():

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

Здесь параметр recursive используется для создания вложенных каталогов.

<?php
$structure = 'users/amanda/assignments/';

// Вывод: успешно созданы вложенные каталоги...
if (!mkdir($structure, 0777, true)) {
    echo 'Failed to create folders...';
} else {
    echo 'Succesfully created nested directories...';
}
?>

Советы

Вот несколько:

При использовании PHP mkdir recursive следует помнить, что, применяя chmod() после mkdir (), чтобы задать режим, не изменяя его значением uchar(), необходимо вызвать chmod() во всех созданных каталогах. Например:

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

Приведенный выше код может привести к результату «/test1/test2» с режимом 0777, но «/test1» по-прежнему имеет режим 0755 от вызова mkdir(). Необходимо указать:

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