Создание директории в PHP. Как назначить права новому каталогу?

создание директории в php. как назначить права новому каталогу?

Создание простой директории

В отличие от файлов, PHP реализует всего один способ создания директорий. Для этого служит функция mkdir(). Она принимает три основных параметра, два из которых являются необязательными. В зависимости от количества введенных параметров функция mkdir() задействует дополнительные возможности. Например, она может не только создавать директории, но и одновременно назначать права доступа.

Как и многие файловые функции mkdir() возвращает логическое значение true в случае успеха и false при возникновении ошибки. У пользователя, под которым работает процесс PHP-интерпретатора, должны быть соответствующие права на доступ к каталогу, внутри которого создается новая директория.

#создаем новую директорию в корне сайта
$dirName = $_SERVER['DOCUMENT_ROOT']. 'temp-dir';

if (!file_exists($dirName)) {
    if (mkdir($dirName)) {
        echo "Директория $dirName успешно создана<br>";
    } else {
        echo 'Во время выполнения произошла ошибка<br>';
    }

} else {
    echo 'Указанная директория уже существует<br>';
}

Назначение прав доступа

Одновременно с созданием директории вы можете назначить ей права доступа для владельца, группы и остальных пользователей. Это происходит за счет указания второго параметра функции mkdir(). Он является целочисленным значением в восьмеричной системе счисления. Такой подход используется в UNIX-подобных операционных системах.

Число, задающее право доступа, формируется как сумма различных флагов где: 0 — это отсутствие прав, 1 — разрешение на просмотр списка файлов, 2 — чтение файлов, 4 — создание и удаление файлов. Например, чтобы дать группе пользователей, закрепленных за директорией, права на чтение и просмотр списка файлов нужно указать число «5» (1+4).

В общем виде восьмеричное число, задающее правило доступа можно записать как «0555», где «0» говорит о восьмеричной системе счисления, а пятерки устанавливают правила для владельца, группы и остальных пользователей по порядку.

#создаем новую директорию в корне сайта
$dirName = $_SERVER['DOCUMENT_ROOT']. 'temp-dir';

if (!file_exists($dirName)) {
    if (mkdir($dirName, 0755)) {
        echo "Директория {$dirName} успешно создана<br>";
    } else {
        echo 'Во время выполнения произошла ошибка<br>';
    }
}

$perms = substr(sprintf('%o', fileperms($dirName)), -4);
echo "Директории нзначены следующие права {$perms}<br>";

Заметка
Хоть PHP и является кроссплатформенным языком программирования, но установка прав доступа к директории при её создании работает только под операционной системой Linux. Windows игнорирует этот параметр, так как система прав пользователей в нем слишком запутана.

Создание вложенных директорий

Случается так, что строка, определяющая путь создаваемой директории, включает несколько вложенных каталогов. Если хоть один из них отсутствует, функция mkdir() вернет логическое значение false.

Вы можете изменить такое поведение за счет третьего параметра. Он принимает логическое значение. Если указан true, все отсутствующие директории из указанного пути будут созданы автоматически.

Последние публикации