디렉터리 다루기
scandir와 mkdir로 디렉터리를 나열하고 생성하고 삭제합니다.
디렉터리 다루기은(는) CoddyKit의 무료 PHP Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 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를 사용합니다
자주 묻는 질문
“디렉터리 다루기” 강의는 무료인가요?
네 — “디렉터리 다루기” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 PHP Academy 강의 전체를 잠금 해제할 수 있습니다. PHP Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“디렉터리 다루기”에서 뭘 배우나요?
scandir와 mkdir로 디렉터리를 나열하고 생성하고 삭제합니다. 브라우저에서 직접 실행하는 실습 코드로 PHP Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
PHP Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 PHP Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“디렉터리 다루기” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 PHP Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 PHP Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- PHP로 파일 읽기
- 파일에 쓰기 및 추가하기
- 디렉터리 다루기
- 파일 업로드 처리