日期:2014-05-17  浏览次数:20558 次

PHP创建层级目录,多级目录
上传文件常常需要将不同类型文件放到不同文件夹中。但由于PHP中创建目录时只能创建一个,什么意思?看一看以下代码就清楚了。

代码:

<?php
mkdir("cjlsoft/download/cpp_book", 0755);
?>

代码执行后会产生错误,因为你想创建的文件夹层级根本不存在。为什么这样说,第一个目录“cjlsoft”如果不存在,后边的目录是根本无法创建。如果“cjlsoft”这个目录存在,而“download”这个目录不存在。你想创建的“cpp_book”也根本无法创建成功!mkdir这个函数是以最后一个目录为创建的目标。"cjlsoft/download/cpp_book"这个路径mkdir函数认为你创建的目录为“cpp_book”。如果它父级不存在的话是肯定创建不了。

代码执行后有以下警告:

Warning: mkdir(): No such file or directory in...

所以这样创建目录是行不通的!所以我们要创建这样的层级目录,就需要必须保证存在它的父目录。所以编写了一个函数,可以让目录方便而成功地创建!

函数:

function cjlsoft_mkdir($path)

{

         $dirs = explode("/", $path);

         $current_dir = "";

         foreach($dirs as $dir)

         {

                   $current_dir .= $dir."/";

                   if(!file_exists($current_dir))

                   {

                            @mkdir($current_dir, 0755);

                   }

         }

}

cjlsoft_mkdir("cjlsoft/download/cpp_book");

这样就确保你想要的层级目录就可以创建了。函数原理,先将你期待的路径用分隔开来,就知道有多少个文件夹,有经过多少层。从而一层一层组合。并创建目录。