Вчера надо было сделать скрипт, который создаёт директории, но они не всегда создаются в уже существующих директориях.
Для этого у функции 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);
mkdir($new_name, 0755, true);
При обычном, не рекурсивном, создании дирректорий заменять «/» на «\» не обязательно.
А я писал функцию, которая делить путь по слешам и создает папки последовательно. А здесь оказывается, третий параметр функции mkdir облегчает жизнь людям 🙂
Спасибо! 🙂
спасибо 🙂
Спасибо! Я промучился часик наверное с этой проблемкой (не создавались директории, сервер на PHP5), теперь все решил 🙂
В PHP есть констаната DIRECTORY_SEPARATOR которая содержит правильный разделитель папок для текущей ОС. Используйте ее и такие проблемы не будут вас парить