PHP로 __macosx 폴더 삭제?
-
21-09-2019 - |
문제
누구든지 삭제 한 경험이 있습니까? __MACOSX
PHP가있는 폴더?
아카이브를 풀고 나서 폴더가 생성되었지만 삭제할 수는 없습니다.
그만큼 is_dir
함수는 파일에서 false를 반환하므로 재귀 삭제 스크립트가 실패하게됩니다 (아카이브 내부는 'Temp'파일이기 때문에) 디렉토리가 비어 있지 않습니다.
PHP5에서 내장 된 ZipACHIVE 클래스 (Extractto Method)를 사용하고 있습니다.
내가 사용하고있는 rmdir 스크립트는 php.net에서 찾은 스크립트입니다.
<?php
// ensure $dir ends with a slash
function delTree($dir) {
$files = glob( $dir . '*', GLOB_MARK );
foreach( $files as $file ){
if( substr( $file, -1 ) == '/' )
delTree( $file );
else
unlink( $file );
}
rmdir( $dir );
}
?>
해결책
기능의 개선 된 버전을 찾았습니다 http://www.php.net/rmdir PHP5가 필요합니다.
- 이 기능은 사용합니다
DIRECTORY_SEPARATOR
대신에/
. PHP는 정의합니다DIRECTORY_SEPARATOR
실행중인 OS ( '/'또는 '')의 적절한 문자로. - 디렉토리 위치는 슬래시로 끝날 필요가 없습니다.
- 함수가 반환됩니다
true
또는false
완료시.
function deleteDirectory($dir) { if (!file_exists($dir)) return true; if (!is_dir($dir)) return unlink($dir); foreach (scandir($dir) as $item) { if ($item == '.' || $item == '..') continue; if (!deleteDirectory($dir.DIRECTORY_SEPARATOR.$item)) return false; } return rmdir($dir); }
다른 팁
어떤 OS와 버전을 사용하고 있습니까?
디렉토리 및 파일의 경로를 수정해야합니다.
// ensure $dir ends with a slash
function delTree($dir) {
foreach( $files as $file ){
if( substr( $file, -1 ) == '/' )
delTree( $dir.$file );
else
unlink( $dir.$file );
}
rmdir( $dir );
}
제휴하지 않습니다 StackOverflow