Для создания папки применяется функция mkdir. Обязательным параметром для этой функции является pathname, где задается путь к создаваемой директории.
mkdir("newfolder");
При таком указании папки, она будет создана в той же директории, из которой был запущен php-скрипт. Если нужно создать каталог в другом месте, можно задать относительный путь к создаваемой папке или указать полный путь от корневой директории сайта.
mkdir("../newfolder"); // на уровень ниже
mkdir("/folder1/folder2/newfolder"); // полный путь
В последнем примере обязательным условием будет существование подкаталогов "folder1" и "folder2". Если их не будет, функция, в таком виде не сможет выполнить создание папки и вернет ошибку:
Warning: mkdir() [function.mkdir]: No such file or directory in …
В случае удачного выполнения, функция возвращает значение True. Если пака не была создана, возвращается значение False.
if (mkdir("newfolder"))
echo "Папка успешно создана";
else
echo "Папка не создана";
Но не стоит использовать эту функцию без проверки на наличие папки, так как ошибку о том, что не удалось создать папку, сервер все равно будет выводить.
За назначение прав на создаваемую папку отвечает второй необязательный параметр функции mkdir. По умолчанию, назначаются максимальные привилегии – 0777.
Права назначаются восьмеричным значением с обязательным нулем на первом месте. Не считая первого нуля, числа означают уровни доступа для владельца, для группы владельца, для всех остальных.
0 – доступ закрыт;
1 – доступ для чтения;
2 – доступ на запись;
4 – доступ на выполнение.
Чаще всего права задаются составной суммой, например:
7 – полный доступ (1+2+4);
5 – чтение и выполнение (1+4).
mkdir("newfolder", 0777); // полный доступ для всех
Создать несколько вложенных папок сразу можно, просто задав еще один необязательный логический параметр – recursive.
mkdir("folder1/folder2/newfolder", 0777, True); // полный доступ для всех
В этом случае, если папок "folder1" и "folder2" нет, функция создаст и их, и папку "newfolder". Сообщений об ошибках, если других проблем не возникнет, выведено не будет и функция вернет значение True.
Пустую папку в PHP можно удалить функцией rmdir. В параметре dirname для нее так же задается полный или относительный путь к удаляемому каталогу:
rmdir("myfolder");
rmdir("folder1/folder2/myfolder");
В каждом из указанных случаев удаляется только папка "myfolder". Если папки нет или путь задан некорректно, будет выведена ошибка:
Warning: rmdir(myfolder) [function.rmdir]: No such file or directory in …
Удаления непустого каталога выполняется путем последовательного удаления вложенных файлов в папке функцией unlink, а затем удаление пустой папки функцией rmdir. Для этого можно использовать подобную функцию:
function my_delete_dir($mypath){
$dir = opendir($mypath);
while (($file = readdir($dir))){
if (is_file($mypath."/".$file))
unlink ($mypath."/".$file);
elseif (is_dir($mypath."/".$file) && ($file != ".") && ($file != ".."))
my_delete_dir ($mypath."/".$file);
}
closedir ($dir);
rmdir ($mypath);
}
my_delete_dir("myfolder"); // вызов функции
Перед большинством операций с каталогами стоит проверять, существуют ли они. Для этого применяется функция file_exists.
Помимо этого нужно убедиться, что указанный объект именно папка, а не файл - функция is_dir. Проверяемая папка задается относительным или полным путем.
if (file_exists("myfolder"))
echo "Указанная папка существует";
else
echo "Указанной папки нет";
if (is_dir("myfolder"))
echo "Указанный объект папка";
else
echo "Указанный объект не папка";
В комментариях запрещено публиковать рекламные материалы. Все сообщения оправляются на модерацию и будут опубликованы, если не нарушают правил сайта после проверки.