Krisha
pain in the neck
Проверка "пути" к файлам
Задача:
Перед тем, как скопировать файл в папку на сервере необходимо убедиться, что эта папка существует. И если она не существует, то создать её с соответствующими правами.
Проблемма:
Так как путь к этой папке может быть вида: /dir/subdir/subsubdir/ и т.д. проверка is_dir(/dir/subdir/subsubdir/); нам мало что дает, мы всё не можем сходу сделать: mkdir(/dir/subdir/subsubdir/); так как папки dir/subdir/ тоже может не быть.
Решение:
Распарсить путь, и проверить(создать) каждую папку в одельности.
Сделал вот так:
Прокоментируйте, плиз, у меня совсем крышенка поехала или еще есть надежда ? Может есть более красивые и удобные способы это делать ?
Задача:
Перед тем, как скопировать файл в папку на сервере необходимо убедиться, что эта папка существует. И если она не существует, то создать её с соответствующими правами.
Проблемма:
Так как путь к этой папке может быть вида: /dir/subdir/subsubdir/ и т.д. проверка is_dir(/dir/subdir/subsubdir/); нам мало что дает, мы всё не можем сходу сделать: mkdir(/dir/subdir/subsubdir/); так как папки dir/subdir/ тоже может не быть.
Решение:
Распарсить путь, и проверить(создать) каждую папку в одельности.
Сделал вот так:
PHP:
// тут прописываем какие файлы куда скрипт должен раскидывать
define("DIR_MAIN" , "main");
define("DIR_FOR_INTROS" , "intros");
define("DIR_FOR_MODULE_INTROS" , "modules");
// далее формируем некий путь
$path = str_replace("/","",DIR_MAIN)."/".
str_replace("/","",DIR_FOR_INTROS)."/".
str_replace("/","",DIR_FOR_MODULE_INTROS);
function checkPath ($path)
{
if(!empty($path) && is_string($path))
{
$rootPath = $_SERVER['DOCUMENT_ROOT']."/";
$path = explode("/", $path);
$pathLength = count($path);
for($i=0; $i < $pathLength; $i++)
{
$rootPath .= $path[$i]."/";
if(!is_dir($rootPath))
{
umask(0);
if(!mkdir($rootPath, 0777)) return false;
}
}
return true;
}
return false;
}
if(checkPath($path)) echo "ok";