Создание новых каталогов

Задача
Необходимо создать каталог.

Решение
Это делается при помощи функции mkdir():mkdir('/tmp/apples',0777) or die($php_errormsg);

Обсуждение
Второй аргумент функции mkdir() – это режим доступа к новому каталогу, который должен быть восьмеричным числом. Текущая маска (umask) вычитается из этого значения прав доступа для создания прав доступа к новому каталогу. Поэтому если текущая маска равна 0002, вызов mkdir('/tmp/apples',0777) устанавливает права доступа к результирующему каталогу, равные 0775 (пользователь и группа могут читать, писать и выполнять; остальные могут только читать и выполнять).

Встроенная в PHP функция mkdir() может создать новый каталог, только если существует родительский каталог. Например, если /tmp/a не существует, то нельзя создать каталог /tmp/a/b, пока не будет создан каталог /tmp/a. Для создания каталога и его родителя существует два способа: можно вызвать системную программу mkdir или вызвать
функцию pc_mkdir_parents(), показанную в примере 19.3. Чтобы использовать системную программу mkdir в UNIX, выполните:

system('/bin/mkdir -p '.escapeshellarg($directory));
В Windows:
system('mkdir '.escapeshellarg($directory));

Можно также вызвать функцию pc_mkdir_parents(), показанную в примере 19.3.
Пример 19.3.


pc_mkdir_parents()
function pc_mkdir_parents($d,$umask = 0777) {
$dirs = array($d);
$d = dirname($d);
$last_dirname = '';
while($last_dirname != $d) {
array_unshift($dirs,$d);
$last_dirname = $d;
$d = dirname($d);
}
foreach ($dirs as $dir) {
if (! file_exists($dir)) {
if (! mkdir($dir,$umask)) {
error_log("Can't make directory: $dir");
return false;
}
} elseif (! is_dir($dir)) {
error_log("$dir is not a directory");
return false;
}
}
return true;
}

Например:
pc_mkdir_parents('/usr/local/upload/test',0777);

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела PHP на эту тему:
Изменение прав доступа к файлу или его владельца
Копирование и перемещение файла
Обработка всех файлов в каталоге
Обработка всех файлов в каталоге
Получение и установка меток даты/времени файла

Вернуться в раздел: PHP / 19. Каталоги