2013-04-28 6 views
1

내부의 파일이있는 폴더를 삭제하려고하는데 다음 코드는 파일을 삭제하지만 폴더는 삭제하지 않습니다.PHP가 디렉토리를 삭제할 수 없습니다.

$nameFolder = $_GET['delete']; 
$dir = '../projecten/projecten/'.$nameFolder.''; 
$filesIN = glob($dir."/"."*"); 
$status = 'false'; 

foreach($filesIN as $files) //here i take all the files 
    unlink($files); 

$status = 'true'; 
if($status=='true'){ 
    rmdir($dir); 
    $status = 'false'; 
} 
+0

PHP 프로세스가 디렉토리를 삭제할 수있는 소유권/파일 권한이 있습니까? –

+0

[answer] (http://stackoverflow.com/questions/1653771/how-do-i-remove-a-directory-that-is-not-empty)를 참조하십시오. – jerdiggity

+10

- get 매개 변수를 사용하여 임의의 디렉토리를 삭제하는 스크립트에주의하십시오. –

답변

3

[편집 됨] 빈 디렉토리 만 삭제할 수 있습니다.

시도 :

<?php 
//recursively remove a directory 
function rrmdir($dir) { 
    foreach(glob($dir . '/' . '*') as $file) { 
     if(is_dir($file)){ 
      rrmdir($file); 
     }else{ 
      unlink($file); 
     } 
    } 
    rmdir($dir); 
} 

//Example 
$nameFolder = $_GET['delete']; 
$dir = '../projecten/projecten/'.$nameFolder.''; 
rrmdir($dir); 
?> 

소스 : http://www.php.net/manual/pt_BR/function.rmdir.php#108113

1

파일 사용 권한을 확인합니다. 웹 서버 사용자가 예를 들어, 사용자 www가 데이터 파일을 삭제하기 위해 디렉토리에 대한 쓰기 권한이 있어야합니다

ls -al /path/to/projecten/projecten/ 

간단히 말해 : 리눅스에. 나는 코드의이 비트 이해하지 못하고 또한

drwxrwxr-x 2 lt lt 4096 Apr 29 08:54 test 

: 아래의 예에서 사용자 LT 테스트 파일을 삭제할 수 있습니다

$status = 'true'; 
if($status=='true'){ 
    rmdir($dir); 
    $status = 'false'; 
} 

을 왜 그냥하지 :

rmdir($dir); 

$ status는 항상 'true'일 것입니다.

또한 시스템 호출을 사용하여 시도 할 수, 예를 들면 :

system `rm -rf /full/path/to/projecten/projecten/$nameFolder`; 

하지만 해당 시스템 명령을 사용하여 매우 조심 - 더 다시 거기 것입니다 잘못된 디렉토리를 삭제하지 않는 경우!

더 안전한 시스템 명령

는 디렉토리가 될 것 비어 알고있는 경우에 사용 :

system `rmdir /full/path/to/projecten/projecten/$nameFolder`; 

을하지만 의견에서 지적했듯이 위의 $ _GET 변수에 따라 디렉토리를 삭제 매우주의해야합니다. GET 변수가 '../../projecten'이고 특히 'rm -rf'시스템 명령이 있다고 상상해보십시오.

0

하지 대답 만 변경하십시오

$nameFolder = $_GET['delete']; 

사람 :

$nameFolder = basename($_GET['delete']); 

또한 다음을 추가 할 수도 있습니다 :

if (is_dir('../projecten/projecten/'.$nameFolder) { 
    // ... do stuff here 
} else { 
    // not a valid path 
} 
관련 문제