Проверка "пути" к файлам

Krisha

pain in the neck
Проверка "пути" к файлам

Задача:
Перед тем, как скопировать файл в папку на сервере необходимо убедиться, что эта папка существует. И если она не существует, то создать её с соответствующими правами.

Проблемма:
Так как путь к этой папке может быть вида: /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";
Прокоментируйте, плиз, у меня совсем крышенка поехала или еще есть надежда ? Может есть более красивые и удобные способы это делать ?
 

Кром

Новичок
Пример с [m]mkdir[/m]
На мой взгляд более красиве решение.

acroyear at io dot com (22-Jun-2003 05:38)

function mkdirs($strPath, $mode)
{
if (is_dir($strPath)) return true;
$pStrPath = dirname($strPath);
if (!mkdirs($pStrPath, $mode)) return false;
return mkdir($strPath);
}
 

fixxxer

К.О.
Партнер клуба
Krisha, ты совсем заработался. :)
Эта задача испокон веков решалась рекурсией.
 
Сверху