以前一直用一个函数去迭代创建目录单是这个只支持php5,因为php5才支持mkdir()的递归参数.

php5的方法:

function CreateDir($dir){    if ( !is_dir($dir) ) {        if ( !@mkdir($dir, 0777, true) ){            return false ;        } else {            @chmod($dir, 0777);        }    }    return $dir;}

最近在做一个项目的时候,客户的服务器是php4.x的,这个方法肯定不好用,于是乎就到php的官方手册中寻宝. 发现了程度不同的几个写法,看代码: 好笨的方法:

 

<?phpfunction recursive_mkdir($path, $mode = 0777) {    $dirs = explode(DIRECTORY_SEPARATOR , $path);    $count = count($dirs);    $path = '.';    for ($i = 0; $i < $count; ++$i) {        $path .= DIRECTORY_SEPARATOR . $dirs[$i];        if (!is_dir($path) && !mkdir($path, $mode)) {            return false;        }    }    return true;}?>

优化了一下的代码:

<?phpfunction mkdir_r($dirName, $rights=0777){    $dirs = explode('/', $dirName);    $dir='';    foreach ($dirs as $part) {        $dir.=$part.'/';        if (!is_dir($dir) && strlen($dir)>0)            mkdir($dir, $rights);    }}?>

最牛逼的写法,直接写了个递归函数:

function mkdirs($dir, $mode = 0777, $recursive = true) {  if( is_null($dir) || $dir === "" ){    return FALSE;  }  if( is_dir($dir) || $dir === "/" ){    return TRUE;  }  if( mkdirs(dirname($dir), $mode, $recursive) ){    return mkdir($dir, $mode);  }  return FALSE;}