首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 建立多層目錄完全攻略:mkdir 遞歸與自定義函數

     編輯:PHP 相關知識

mkdir 基礎與限制

mkdir() 預設僅能建立單層目錄,父目錄不存在時會失敗。PHP 5.0.0 新增 recursive 參數,設為 true 即可遞歸建立:

mkdir('/path/to/deep/dir', 0777, true); // PHP 5+ 一行搞定

Windows 環境下 mode 參數會被忽略。

PHP 4 相容:自訂遞歸建立函數

方案一:經典遞歸 mkdirs()

function mkdirs($dir, $mode = 0777) {
    if (is_dir($dir) || @mkdir($dir, $mode)) return true;
    if (!mkdirs(dirname($dir), $mode)) return false;
    return @mkdir($dir, $mode);
}

原理:先嘗試建立目標目錄,失敗則遞歸建立父目錄,最後再建立目標目錄。使用 @ 抑制警告,配合 is_dir() 判斷存在性。

方案二:精簡版 create_folders()(推薦)

function create_folders($dir) {
    return is_dir($dir) || (create_folders(dirname($dir)) && mkdir($dir, 0777));
}

優點:利用邏輯運算子短路特性,代碼極度精簡,邏輯清晰——先確保父目錄存在,再建立當前目錄。

函數對照表

函數功能適用版本
mkdir()建立單層目錄所有版本
mkdir(..., true)遞歸建立多層目錄PHP 5.0+
mkdirs()自訂遞歸建立PHP 4/5 通用
create_folders()精簡遞歸建立PHP 4/5 通用

實務建議

  • PHP 5 以上專案優先使用內建 recursive 參數
  • 需相容 PHP 4 或特殊權限控制時,採用 create_folders()
  • 建立前務必檢查寫入權限,避免靜默失敗
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved