php 创建多级目录

php提供了mkdir来创建文件,但对应5.0一下的版本不支持递归创建多级目录,也就是说给定要创建的目录的上级目录不存在,那么就会创建失败,5.0及以上版本通过吧第三个参数设置为TRUE,就能递归创建指定的目录,不过自己实现一个递归创建多目录的函数也很简单,具体代码如下:

  1. function mkdirs($dir){
  2. if(!is_dir($dir)){
  3. if(!mkdirs(dirname($dir))){
  4. return FALSE;
  5. }
  6. if(!mkdir($dir, 0777)){
  7. return FALSE;
  8. }
  9. }
  10. return TRUE;
  11. }
  12. $path="/aa/bb/cc/cd"; //要创建的目录
  13. $mode=0755; //创建目录的模式
  14. createdir($path,$mode);//测试

php创建目录的函数是mkdir($dir,$mode);但是它每次只能创建一个目录,也就是说它不能一次创建多级目录,小编整理了两个可以递归创建目录的方法,代码如下:

  1. <?php
  2. /*
  3. *mkdir($dir,$mode)
  4. *PHP 递归创建目录
  5. */
  6. function mkdirs($dir, $mode = 0777)
  7. {
  8. if (is_dir($dir) || @mkdir($dir, $mode)){
  9. return true;
  10. }
  11. if (!mkdirs(dirname($dir), $mode)){
  12. return false;
  13. }
  14. return @mkdir($dir, $mode);
  15. }
  16. function mkdirs($dir, $mode = 0777)
  17. {
  18. $dirArray = explode("/",$dir);
  19. $dirArray = array_filter($dirArray);
  20. $created = "";
  21. foreach($dirArray as $key => $value){
  22. if(!emptyempty($created)){
  23. $created .= "/".$value;
  24. if(!is_dir($created)){
  25. mkdir($created,$mode);
  26. }
  27. }else{
  28. if(!is_dir($value)){
  29. mkdir($value,$mode);
  30. }
  31. $created .= $value;
  32. }
  33. }
  34. }
  35. ?>
  36. //代码应用实例
  37. $path="abc/ff/ss/";
  38. mkdirs($path,$mode = 0777);