0Pricing
PHP Academy · บทเรียน

การทำงานกับไดเรกทอรี

แสดงรายการ สร้าง และลบไดเรกทอรีด้วย scandir และ mkdir

การทำงานกับไดเรกทอรี เป็นบทเรียน PHP Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน PHP Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส PHP Academy มีบทเรียนทั้งหมด 4 บทเรียน

การดำเนินการกับไดเรกทอรีใน PHP

PHP มีฟังก์ชันสำหรับแสดงรายการ สร้าง นำทาง และลบไดเรกทอรีบนเซิร์ฟเวอร์:

  • scandir() — แสดงรายการเนื้อหาในไดเรกทอรี
  • mkdir() — สร้างไดเรกทอรี
  • rmdir() — ลบไดเรกทอรีว่าง
  • glob() — ค้นหาไฟล์ที่ตรงกับรูปแบบ

scandir()

แสดงรายการไฟล์และไดเรกทอรีทั้งหมดในไดเรกทอรี:

<?php
$entries = scandir('/var/www/html/uploads');

// scandir includes '.' and '..'
$entries = array_diff($entries, ['.', '..']);

foreach ($entries as $entry) {
    echo $entry . PHP_EOL;
}

การจับคู่รูปแบบด้วย glob()

glob() จะส่งคืนไฟล์ที่ตรงกับรูปแบบสไตล์เชลล์:

<?php
// Find all PHP files in a directory
$phpFiles = glob('/var/www/html/*.php');

// Recursively with GLOB_BRACE
$logs = glob('/var/log/{app,error,access}.log', GLOB_BRACE);

foreach ($phpFiles as $file) {
    echo basename($file) . PHP_EOL;
}

mkdir() และสิทธิ์

สร้างไดเรกทอรีซ้อนกันหนึ่งรายการหรือหลายรายการ:

<?php
$dir = '/var/www/uploads/2024/05';

// Create nested directories in one call:
if (!is_dir($dir)) {
    mkdir($dir, 0755, true);  // true = recursive
    echo "Created: $dir";
}

การลบไดเรกทอรี

rmdir() จะลบได้เฉพาะไดเรกทอรีว่าง หากต้องการลบพร้อมเนื้อหา ให้ใช้ฟังก์ชันแบบเรียกซ้ำ:

<?php
function deleteDir(string $path): void {
    foreach (scandir($path) as $entry) {
        if ($entry === '.' || $entry === '..') continue;
        $full = $path . DIRECTORY_SEPARATOR . $entry;
        is_dir($full) ? deleteDir($full) : unlink($full);
    }
    rmdir($path);
}

deleteDir('/tmp/old_cache');

การวนซ้ำไดเรกทอรีด้วย DirectoryIterator

วิธีแบบ OO ในการวนซ้ำเนื้อหาไดเรกทอรี:

<?php
$dir = new DirectoryIterator('/var/www/html/images');

foreach ($dir as $info) {
    if ($info->isDot()) continue;
    echo $info->getFilename();
    echo ' (' . $info->getSize() . ' bytes)';
    echo PHP_EOL;
}

RecursiveDirectoryIterator

วนซ้ำไฟล์ทั้งหมดในโครงสร้างต้นไม้ของไดเรกทอรี:

<?php
$iterator = new RecursiveIteratorIterator(
    new RecursiveDirectoryIterator('/var/www/src')
);

foreach ($iterator as $file) {
    if ($file->isDot()) continue;
    if ($file->getExtension() === 'php') {
        echo $file->getPathname() . PHP_EOL;
    }
}

getcwd และ chdir

รับและเปลี่ยนไดเรกทอรีทำงานปัจจุบัน:

<?php
$originalDir = getcwd();
echo 'Current: ' . $originalDir . PHP_EOL;

chdir('/var/www/html');
echo 'Changed to: ' . getcwd() . PHP_EOL;

// Restore
chdir($originalDir);
echo 'Restored: ' . getcwd() . PHP_EOL;

การจัดการเส้นทาง

สร้างและแยกวิเคราะห์เส้นทางไฟล์ด้วยค่าคงที่และฟังก์ชันที่ใช้ได้ข้ามแพลตฟอร์ม:

<?php
// DIRECTORY_SEPARATOR = '/' on Unix, '\\' on Windows
$base    = '/var/www/app';
$subPath = 'uploads' . DIRECTORY_SEPARATOR . 'images';
$full    = $base . DIRECTORY_SEPARATOR . $subPath;

echo realpath($full);  // resolves symlinks

// __DIR__ is the directory of the current file
$configPath = __DIR__ . '/../config/settings.json';
echo realpath($configPath);

พื้นที่ดิสก์

ตรวจสอบพื้นที่ดิสก์ที่พร้อมใช้งานและพื้นที่ทั้งหมด:

<?php
$path = '/var/www';

$free  = disk_free_space($path);
$total = disk_total_space($path);
$used  = $total - $free;

echo 'Used: ' . round($used / 1024**3, 2) . ' GB';
echo 'Free: ' . round($free / 1024**3, 2) . ' GB';
echo 'Total: ' . round($total / 1024**3, 2) . ' GB';

ไดเรกทอรีชั่วคราวของ SPL

ใช้ sys_get_temp_dir() เสมอเพื่อค้นหาไดเรกทอรีชั่วคราวที่ถูกต้องในแต่ละแพลตฟอร์ม:

<?php
$tmpDir = sys_get_temp_dir();
echo 'Temp dir: ' . $tmpDir;

// Create a unique temporary directory
$uniqueDir = $tmpDir . DIRECTORY_SEPARATOR . 'myapp_' . uniqid();
mkdir($uniqueDir, 0700);

// ... use directory ...
// cleanup when done

ตรวจสอบอย่างรวดเร็ว

ฟังก์ชัน PHP ใดสร้างไดเรกทอรีซ้อนกันแบบเรียกซ้ำได้ด้วยการเรียกใช้เพียงครั้งเดียว

สรุป: การทำงานกับไดเรกทอรี

การดำเนินการกับไดเรกทอรี:

  • scandir() — แสดงรายการเนื้อหา (รวม . และ ..)
  • glob() — ค้นหาไฟล์ตามรูปแบบ
  • mkdir($path, 0755, true) — สร้างแบบเรียกซ้ำ
  • rmdir() — ลบไดเรกทอรีว่าง
  • RecursiveDirectoryIterator สำหรับการไล่ดูโครงสร้างเชิงลึก
  • __DIR__ และ DIRECTORY_SEPARATOR สำหรับเส้นทางที่ใช้ได้ข้ามแพลตฟอร์ม

คำถามที่พบบ่อย

บทเรียน “การทำงานกับไดเรกทอรี” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การทำงานกับไดเรกทอรี” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส PHP Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส PHP Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การทำงานกับไดเรกทอรี”

แสดงรายการ สร้าง และลบไดเรกทอรีด้วย scandir และ mkdir คุณปฏิบัติ PHP Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน PHP Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน PHP Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “การทำงานกับไดเรกทอรี” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน PHP Academy นี้ได้ไหม

ได้ บทเรียน PHP Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การอ่านไฟล์ด้วย PHP
  2. การเขียนและต่อท้ายไฟล์
  3. การทำงานกับไดเรกทอรี
  4. การจัดการการอัปโหลดไฟล์
← กลับไปที่ PHP Academy