2011-10-08 3 views
2

제 기능 정리가 그 것처럼 보입니다. PHP 재귀 적 삭제 기능으로 경고 메시지가 나타납니다.

function cleanUp($exdirs, $exfiles){ 
$it = new RecursiveIteratorIterator(
    new RecursiveDirectoryIterator('.'), 
    RecursiveIteratorIterator::CHILD_FIRST 
); 
foreach($it as $entry) { 
    if ($entry->isDir() && !in_array($entry->getBasename(), $exdirs)) { 
    try { 
     rmdir($entry->getPathname()); 
    } 
    catch (Exception $ex) { 
     // dir not empty 
    } 
    } 
    elseif (!in_array($entry->getFileName(), $exfiles)) { 
    unlink($entry->getPathname()); 
    } 
} 
} 

그리고

$excludeDirsNames = array('cgi-bin'); 
$excludeFileNames = array('ws.zip'); 
cleanUp($excludeDirsNames , $excludeFileNames); 

같은이 함수를 호출 이제 문제는 내가 경고 메시지를 얻고있다. can not unlink cgi-bin on line unlink($entry->getPathname());

내 기능에 문제가 있습니까? 그 문제를 해결하는 방법?

+0

해당 디렉토리에 대한 사용 권한을 확인 했습니까? – zerkms

+0

어느 쪽? cgi-bin은 제외입니다. 예외 배열을 함수에 보내고 있습니다. –

+0

경고 메시지를 다시 한 번 읽어보십시오.''cgi-bin을 줄에 연결 해제 할 수 없습니다 '. 그것은 당신이'cgi-bin' 디렉토리를 지우려고하는 것이고 그것에 대한 충분한 권한이 없다는 것이 분명합니다. – zerkms

답변

2

cgi-bin은 심볼릭 링크이며 일반 디렉토리가 아닙니다. 그것이 "링크 해제"섹션으로 들어가는 이유입니다. 오류 메시지는 아마도 사용 권한 때문일 수 있습니다.

해결 방법 : 'cgi-bin'을 $ excludeFileNames 배열로 이동하십시오.

관련 문제