FTP 상에서 삭제안되는 파일삭제하는 간단한 PHP파일 만들기

2010. 6. 4. 19:34웹사이트 개발TIP

728x90
반응형
요즘 블로그란걸 알고 테스트 해보고 있는 중인데,
이걸 설치했다가 삭제했다가 하는 도중에 지워지지 않아 애 먹은 적이 있습니다.

FTP상에서 파일이나 폴더가 삭제되지 않는 경우는 대부분 권한설정으로 인한것이 대부분입니다.

이때 우선 해볼 수 있는 것은 FTP상에서 해당 폴더의 권한을 777로 바꾼후에 삭제를 시도해 보는 것입니다. 대부분의 경우는 이렇게 권한 변경만으로 폴더가 삭제되기도 합니다만, 이방법으로도 삭제가 안되는 경우가 있습니다.

이럴 경우, 호스팅업체 관리자에게 부탁하면 쉽게 해결되긴 하지만, 매번 삭제를 부탁하기도 번거롭고 미안해 지기도 해서 여기 저길 뒤지다가 파일 하나를 발견했습니다.

FTP상에서 지워지지 않는 파일이나 폴더가 있는 경우에 이 파일을 지우기 원하는 해당 폴더에 올려 놓고 실행하면 쉽게 지워집니다.

소스를 밑에  적었습니다.
이 소스를 복사하여 메모장이나 edit plus 같은 소스파일 에디터에다가 적당한 이름으로 저장합니다.
저의 경우에는 del_ok.php로 저장해 두었습니다.

사용방법은 아래와 같습니다.

1. del_ok.php파일을 삭제하기 원하는 폴더안에다 ftp로 업로드 합니다.

2. 웹브라우져에서 주소창에다 del_ok.php파일이 올라가 있는 경로주소를 입력하여 불러옵니다.

3. 표시되는 내용을 확인한 후에 ok를 누르면 끝.

그런데 위의 방법으로도 안지워지는 경우가 있습니다.
ttetertools라는 블로그 프로그램의 경우가 그렇습니다.
이 테터툴즈의 경우에는 폴더안에 .htacess라는 숨겨진 파일이 있습니다. 그래서 해당폴더가 삭제도 안되고, 그 폴더안에 파일을 넣어도 호출조차 안되는 경우가 있습니다.

이런 경우에는 ftp 프로그램상에서 "숨겨진 파일보기"를 선택한 후에 .htacess파일을 삭제한 후 폴더를 삭제하면 지워집니다.

*알ftp의 경우 상단메뉴에서 옵션 -> 환경설정-> 숨겨진파일보기.
*leafFTP경우 상단메뉴 Options-> preperence -> general -> view -> Show hidden file 체크




그래도 지워지지 않는 경우에는 위의 del_ok.php파일을 업로드하여 삭제해 주면 됩니다.
유용하게 쓰시기 바랍니다.

아래는 del_ok.php 파일 소스입니다.

=======================================================

<?
$directory = dirname(__FILENAME__);

//set_time_limit(300);
function RmDirR ($dirName) {
$d = dir ($dirName);
while($entry = $d->read()) {
if ($entry != "." && $entry != "..") {
if (Is_Dir($dirName."/".$entry)) {
RmDirR($dirName."/".$entry);
echo ($dirName."/".$entry."<BR>");
} else {
if(!strstr($dirName."/".$entry,basename(__FILENAME__))) {
UnLink ($dirName."/".$entry);
}
echo ($dirName."/".$entry."<BR>");
}
}
}
$d->close();
RmDir ($dirName);
}

function checkdeldir ($dirName) {
$d = dir ($dirName);
while($entry = $d->read()) {
if ($entry != "." && $entry != "..") {
if (Is_Dir($dirName."/".$entry)) {
echo ($dirName."/".$entry."<BR>");
} else {
echo ($dirName."/".$entry."<BR>");
flush();
}
}
}
$d->close();
flush();
//checkdeldir($dirName);
}


if($run=='ok'){
RmDirR($directory);
} else {
checkdeldir($directory);
}
?>
위 파일을 삭제합니다..
<A HREF="<?=$PHP_SELF."?run=ok"?>">OK</A>

=======================================================
728x90
반응형