PHP: Рекурсивное создание (mkdir) директорий в Win и слэш.

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

Для этого у функции mkdir() есть третий параметр, который позволяет рекурсивно создавать директории, т.е. если надо создать /dir1/dir2/dir3, но при этом не существует dir2, то можно написать:

mkdir («/dir1/dir2/dir3», 0755, true);

Но под Windows такая запись будет выдавать ошибку. Решение было найдено в комментариях на php.net.

Под Windows, при рекурсивном создании директории, надо заменять все «/» на «\».
Т.е. надо модифицировать код так:

$new_name = str_replace(«/», «\\», $new_name);
mkdir($new_name, 0755, true);

При обычном, не рекурсивном, создании дирректорий заменять «/» на «\» не обязательно.

PHP: Рекурсивное создание (mkdir) директорий в Win и слэш.: 4 комментария

  1. А я писал функцию, которая делить путь по слешам и создает папки последовательно. А здесь оказывается, третий параметр функции mkdir облегчает жизнь людям 🙂
    Спасибо! 🙂

  2. Спасибо! Я промучился часик наверное с этой проблемкой (не создавались директории, сервер на PHP5), теперь все решил 🙂

  3. В PHP есть констаната DIRECTORY_SEPARATOR которая содержит правильный разделитель папок для текущей ОС. Используйте ее и такие проблемы не будут вас парить

Добавить комментарий

Ваш e-mail не будет опубликован.