
streamWrapper::mkdir 함수는 디렉토리를 생성할 때, 디렉토리가 이미 존재하는 경우 에러를 발생시키는 문제가 있습니다. 이 문제를 해결하기 위해서는 mkdir 함수를 사용하는 방법을 다음과 같이 변경할 수 있습니다.
1. 디렉토리가 이미 존재하는지 확인하는 코드를 추가합니다.
#hostingforum.kr
php
if (!file_exists($dir)) {
mkdir($dir, 0777, true);
}
위 코드는 디렉토리가 존재하지 않는 경우에만 mkdir 함수를 호출합니다.
2. mkdir 함수의第三인자인 recursive 옵션을 true로 설정합니다.
#hostingforum.kr
php
mkdir($dir, 0777, true);
위 코드는 디렉토리가 이미 존재하는 경우에도 mkdir 함수를 호출합니다. 그러나 이미 존재하는 디렉토리 내부의 파일이나 서브 디렉토리를 삭제하지는 않습니다.
3. mkdir 함수 대신에 mkdir_recursive 함수를 사용합니다.
#hostingforum.kr
php
function mkdir_recursive($dir) {
if (!file_exists($dir)) {
mkdir($dir, 0777, true);
}
$files = scandir($dir);
foreach ($files as $file) {
if ($file == '.' || $file == '..') continue;
$path = $dir . DIRECTORY_SEPARATOR . $file;
if (is_dir($path)) {
mkdir_recursive($path);
}
}
}
위 코드는 mkdir_recursive 함수를 호출하여 디렉토리와 그 내부의 파일이나 서브 디렉토리를 삭제하고 재생성합니다.
2025-05-28 11:40