При написании скриптов на языке PHP не редко требуется выполнять различные операции с директориями. Директории (они же — папки и каталоги) позволяют структурировать и упорядочивать файлы на устройстве. Для работы с каталогами в языке PHP имеются встроенные функции.

Получение списка файлов и директорий

Получить содержимое каталога можно используя функцию glob()

Функция имеет два параметра:

$pattern (обязательный): шаблон поиска

$flags (опциональный): один или несколько флагов, описание которых можно найти в документации

Рассмотрим примеры.

Для поиска в директории всех файлов и директорий, имена которых заканчиваются на .php, следует использовать код:

$filelist = glob("*.php");

Если вывести переменную $filelist, то получим:

array (
0 => 'article.php', 
1 => 'text.php'
)

Если нужен список файлов и директорий, имена которых начинаются на “po”, то код будет выглядеть так:

$filelist = glob("po*");

Функция glob() появилась в 4 версии PHP. В более ранних версиях можно использовать функцию readdir(). Она используется совместно с функциями opendir(), и  closedir().

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

С самых ранних версий PHP для создания директорий использовалась функция mkdir().

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

Функция пытается создать директорию, заданную в pathname.

$pathname
Путь к директории.

$mode
По умолчанию принимает значение 0777, что означает самые широкие права. Больше информации о режимах доступа можно узнать на странице руководства функции chmod().

Замечание:

Аргумент mode игнорируется в Windows.

Обратите внимание, что аргумент mode необходимо задавать в виде восьмеричного числа (первой цифрой должен быть ноль). На аргумент mode также влияет текущее значение umask, которое можно изменить при помощи umask().

$recursive
Разрешает создание вложенных директорий, указанных в pathname.

$context

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

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

mkdir("/path/to/my/dir", 0700);