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

PHP Directory 函數完整參考:目錄操作指南

     編輯:PHP 入門

PHP Directory 函數完整參考:目錄操作指南


簡介

Directory 函數提供目錄層級的操作:開啟/關閉目錄控制代碼、讀取條目、切換目錄、取得目前工作目錄、掃描目錄內容等。所有函數內建核心,無需安裝。


核心函數

函數說明
opendir()開啟目錄控制代碼,返回 resource
readdir()從目錄控制代碼讀取下一個條目 (檔案/子目錄名稱)
closedir()關閉目錄控制代碼
rewinddir()將目錄控制代碼重置到第一個條目
scandir()返回指定目錄的檔案與子目錄陣列 (含 . 與 ..)
chdir()改變目前工作目錄
getcwd()取得目前工作目錄絕對路徑
chroot()改變根目錄 (需 root 權限,僅 CLI/特定環境可用)
dir()返回 Directory 類別實例 (物件導向風格)

常見操作範例

1. 程序式風格列出目錄內容

<?php
$path = '/var/www/html';
if ($handle = opendir($path)) {
    while (false !== ($entry = readdir($handle))) {
        if ($entry !== '.' && $entry !== '..') {
            echo $entry . '<br>';
        }
    }
    closedir($handle);
}
?>

2. 使用 scandir() 簡潔取得陣列

<?php
$files = scandir('/var/www/html');
foreach ($files as $file) {
    if ($file !== '.' && $file !== '..') {
        echo $file . '<br>';
    }
}
?>

3. 物件導向風格 Directory 類別

<?php
$d = dir('/var/www/html');
while (false !== ($entry = $d->read())) {
    if ($entry !== '.' && $entry !== '..') {
        echo $entry . '<br>';
    }
}
$d->close();
?>

4. 遞迴掃描目錄 (搭配 RecursiveDirectoryIterator)

<?php
$iterator = new RecursiveIteratorIterator(
    new RecursiveDirectoryIterator('/var/www/html', FilesystemIterator::SKIP_DOTS)
);
foreach ($iterator as $file) {
    echo $file->getPathname() . '<br>';
}
?>

5. 切換與取得工作目錄

<?php
echo '原目錄: ' . getcwd() . '<br>';
chdir('/tmp');
echo '新目錄: ' . getcwd() . '<br>';
?>

效能與安全提示

  • 大量檔案目錄建議使用 scandir() 或 RecursiveDirectoryIterator,避免 readdir() 循環過慢。
  • 使用者輸入路徑務必經過 realpath() 驗證,防止目錄遍歷攻擊。
  • Windows 上 chroot() 不支援,僅限 Unix-like 系統且需特權。
  • 操作完成記得 closedir() 釋放資源。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved