Skip to content


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);

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

Posted in Программирование.

Tagged with .


3 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

  1. EwGenij says

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

  2. forrest says

    спасибо :)

  3. Denis says

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



Some HTML is OK

or, reply to this post via trackback.



Rambler's Top100 Яндекс цитирования