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

PHP 目錄操作函數完整詳解:chdir、scandir、opendir 等實用指南

     編輯:PHP 綜合知識

PHP 目錄處理函數大全

PHP 提供豐富的目錄操作函數,適用於檔案掃描、路徑切換、目錄建立刪除等場景。本文整理核心函數用法與範例。

預定義常數

  • DIRECTORY_SEPARATOR:系統目錄分隔符(Windows `\`,Linux `/`)
  • PATH_SEPARATOR:路徑分隔符(Windows `;`,Linux `:`)

核心函數速查表

函數說明範例
getcwd()取得目前工作目錄echo getcwd();
chdir($dir)切換工作目錄chdir('public_html');
opendir($path)開啟目錄控制代碼$dh = opendir('/var/www');
readdir($handle)讀取目錄下一個項目while ($f = readdir($dh)) ...
closedir($handle)關閉目錄控制代碼closedir($dh);
scandir($dir, $order)列出檔案陣列,可排序scandir('/tmp', 1); // 降冪
mkdir($path, $mode, $recursive)建立目錄mkdir('a/b/c', 0755, true);
rmdir($dir)刪除空目錄rmdir('empty_dir');
dir($path)回傳 Directory 類別實例$d = dir('.'); while($e=$d->read())...
rewinddir($handle)重置目錄指標到開頭rewinddir($dh);

實用範例

1. 遞迴列出所有檔案(含子目錄)

<?php
function listAllFiles($dir) {
    $files = [];
    $items = scandir($dir);
    foreach ($items as $item) {
        if ($item === '.' || $item === '..') continue;
        $path = $dir . DIRECTORY_SEPARATOR . $item;
        if (is_dir($path)) {
            $files = array_merge($files, listAllFiles($path));
        } else {
            $files[] = $path;
        }
    }
    return $files;
}
print_r(listAllFiles(__DIR__));
?>

2. 使用 Directory 類別(物件導向風格)

<?php
$d = dir('/var/www/html');
echo "Handle: {$d->handle}\n";
echo "Path: {$d->path}\n";
while (false !== ($entry = $d->read())) {
    echo "$entry\n";
}
$d->close();
?>

3. 安全切換目錄並還原

<?php
$old = getcwd();
chdir('/tmp');
// 執行臨時操作...
chdir($old); // 還原
?>

最佳實踐提醒

  • 路徑拼接務必使用 DIRECTORY_SEPARATOR 或 /(PHP 自動轉換),避免跨平台問題。
  • 大量檔案操作時,scandir() 會一次載入所有檔名到記憶體,超大目錄建議用 opendir() + readdir() 迭代處理。
  • 權限檢查:操作前用 is_readable()、is_writable() 確認權限。
  • 刪除非空目錄需遞迴刪除檔案後再 rmdir(),參見 PHP 刪除非空目錄函數。

熟練掌握目錄函數,能高效實作檔案管理器、靜態站點生成器、自動部署腳本等工具。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved