Я получил массив, содержащий имена путей и имена файлов
['css/demo/main.css', 'home.css', 'admin/main.css','account']
Я хочу создать эти файлы и папки, если они еще не существуют. Перезапишите их, если они уже существуют.
Для каждого из этих путей вам нужно будет указать, является ли это файлом или каталогом. Или вы можете сделать свой сценарий предполагать, что путь указывает на файл, когда базовое имя (последняя часть пути) содержит точку.
Для создания каталога рекурсивно просто:
mkdir(dirname($path), 0755, true); // $path is a file mkdir($path, 0755, true); // $path is a directory
0755
– выражение разрешения файла, вы можете прочитать об этом здесь: http://ch.php.net/manual/en/function.chmod.php
<?php function mkpath($path) { if(@mkdir($path) or file_exists($path)) return true; return (mkpath(dirname($path)) and mkdir($path)); } ?>
Это делает пути рекурсивно.
Я просто использовал простой способ взорвать строку и перестроить и проверить, является ли файл или каталог
public function mkdirRecursive($path) { $str = explode(DIRECTORY_SEPARATOR, $path); $dir = ''; foreach ($str as $part) { $dir .= DIRECTORY_SEPARATOR. $part ; if (!is_dir($dir) && strlen($dir) > 0 && strpos($dir, ".") == false) { mkdir($dir , 655); }elseif(!file_exists($dir) && strpos($dir, ".") !== false){ touch($dir); } } }
Наконец, я получил этот метод, и он отлично работает для меня
shell_exec("mkdir -p ".$your_path);