利用php函式mkdir遞迴建立層級目錄

2022-04-11 22:32:25 字數 1305 閱讀 6018

專案開發中免不了要在伺服器上建立資料夾,比如上傳時的目錄,模板解析時的目錄等。這不當前手下的專案就用到了這個,於是總結了幾個迴圈建立層級目錄的方法。

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...