การทำงานกับไดเรกทอรี
แสดงรายการ สร้าง และลบไดเรกทอรีด้วย 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การอ่านไฟล์ด้วย PHP
- การเขียนและต่อท้ายไฟล์
- การทำงานกับไดเรกทอรี
- การจัดการการอัปโหลดไฟล์