2012-04-27 91 views
2
mkdir ("dir1/{dir1-1,dir1-2}",0755,TRUE); 

這條命令創建,而不是創建dir1-1和dir1-2作爲兩個子文件夾名爲「{dir1-1,dir1-2}」的單個子文件夾的文件夾DIR1 DIR1。MKDIR創建多個子目錄的PHP /阿帕奇

任何想法如何從一個單一的mkdir命令如上得到這個工作?

+4

簡單:你不能。什麼讓你覺得你可以?爲什麼不直接調用'mkdir()'兩次? – DaveRandom 2012-04-27 23:16:13

+0

遞歸.... – 2012-04-27 23:17:36

+0

@DaveRandom這是什麼讓我覺得我可以:http://developmentality.wordpress.com/2010/04/11/advanced-mkdir-and-brace-expansion-fun/除了它不工作對於我來說,這個例子看起來是可能的。另外,假設你有10個子目錄,在一個mkdir命令中這樣做效率更高,更乾淨。 – Maverick 2012-04-27 23:20:06

回答

6

PHP不支持與shell一樣的大括號擴展。如果你想創建多個目錄,你將不得不多次調用mkdir(),你可以通過循環來輕鬆完成。

您可以將TRUE作爲第三個參數傳遞給mkdir() - 這意味着如果所有備份樹的目錄都不存在並且父目錄可寫,那麼它們也將被創建。在循環操作中,您可以安全地將TRUE傳遞給所有呼叫,給定目錄的第一次迭代將創建它,隨後的呼叫將不會產生不利影響。

例如:

$toCreate = array(
    'dir1/dir1-1', 
    'dir1/dir1-2' 
); 

$permissions = 0755; 

foreach ($toCreate as $dir) { 
    mkdir($dir, $permissions, TRUE); 
} 
1

殼的mkdir可以這樣做:

mkdir -p /foo/bar/peng 

所以現在你可能只是從PHP中調用外部shell命令。但要小心安全。