專案開發中免不了要在伺服器上建立資料夾,比如上傳時的目錄,模板解析時的目錄等。這不當前手下的專案就用到了這個,於是總結了幾個迴圈建立層級目錄的方法。
php預設的mkdir一次只能建立一層目錄,而要逐層建立各級目錄的話,一般都是先從父建立,然後逐層往下建立,但是這樣手工建立的話,有點太過於麻煩了。
我們寫程式是做什麼的?不久是為了能自動化實現我們需要的功能麼,這裡的方法就是為了能夠通過程式幫我們自動建立完成層級目錄。
ruesin.com
思路有兩種:
一、從上往下(父級→子級)
1.先判斷 父級 目錄是否存在,不存在則建立;
2.判斷二級子目錄是否存在,不能存在則建立,
3.在第二步中以子目錄作為引數遞迴呼叫函式本身。
二、從下往上(子級→父級)
1.先判斷最底層目錄是否存在;
2.判斷底層目錄的上層目錄是否存在,不存在則以上層目錄作為引數遞迴進行。
以下是幾種方法:
1:遞迴建立目錄,此種方法是我目前感覺比較好的方法。
function mkdirs($dir)
if(!mkdir($dir,0777))
}return true;
}mkdirs('1/2/3/');
2:遞迴建立級聯目錄,如果第乙個方法不太理解的話,可以結合下面這個方法理解
function mkdirs1($path)
if(is_dir(dirname($path)))
mkdirs1(dirname($path));//從子目錄往上建立
return mkdir($path);//因為有父目錄,所以可以建立路徑
}//mkdirs1('1/2/3/');
3:迭代建立級聯目錄
function makedir($path)
if(empty($arr))
while(count($arr))
}makedir('1/2/3');
ps:有時候程式指令碼的檔案不一定在**根目錄,而建立的檔案需要在根目錄建立,那我們就需要用到**根目錄路徑:$_server['document_root'];所以我不建議使用後面的三個方法。
以下三種是通過』/'分割路徑的方法進行建立的。
function mk1($dir)
}}function mk2($dir)
}function mkdirs0($path)
if (!is_dir($thispath))
}}
php利用mkdir建立多級目錄
先介紹一下 mkdir 這個函式 mkdir path,0777,true 第乙個引數 必須,代表要建立的多級目錄的路徑 第二個引數 設定目錄的許可權,預設是 0777,意味著最大可能的訪問權 第三個引數 true表示允許建立多級目錄。舉例 支援建立中文目錄 header content type ...
php中mkdir 函式的許可權問題
使用以下php 建立了乙個目錄,期望目錄的許可權是0777,實際結果是0755 mkdir aa 0777 1.mkdir 函式指定的目錄許可權只能小於等於系統umask設定的預設許可權。如linux預設的umask一般0022,即建立目錄的預設許可權是0755,所以這時php mkdir aa 0...
php中mkdir 函式的許可權問題
使用以下php 建立了乙個目錄,期望目錄的許可權是0777,實際結果是0755 mkdir aa 0777 1.mkdir 函式指定的目錄許可權只能小於等於系統umask設定的預設許可權。如linux預設的umask一般0022,即建立目錄的預設許可權是0755,所以這時php mkdir aa 0...