Copy
<?php
$sub_menu = '100920';
include_once('./_common.php');
if ($is_admin != 'super')
alert('최고관리자만 접근 가능합니다.', G5_URL);
$g5['title'] = '없는 게시물 파일 일괄삭제';
include_once('./admin.head.php');
?>
<div class="local_desc01 local_desc">
<p>
완료 메세지가 나오기 전에 프로그램의 실행을 중지하지 마십시오.
</p>
</div>
<?php
$directory = array();
$dl = array('file', 'file2');
foreach($dl as $val) {
$dir = G5_DATA_PATH.'/'.$val;
if(!is_dir($dir)) continue;
if($handle = opendir($dir)) {
while(false !== ($entry = readdir($handle))) {
if($entry == '.' || $entry == '..')
continue;
$path = G5_DATA_PATH.'/'.$val.'/'.$entry;
if(is_dir($path))
$directory[] = $path;
}
}
}
flush();
if (empty($directory)) {
echo '<p>디렉토리를 열지못했습니다.</p>';
}
$cnt=0;
echo '<ul>'.PHP_EOL;
foreach($directory as $dir) {
$files = glob($dir);
$dirs = explode('/', $dir);
if ( $dirs[count($dirs)-1] == "lost+found" || $dirs[count($dirs)-1] == "file_name" || $dirs[count($dirs)-1] == "lost+found" ) {
continue;
}
// echo '<li>'.$dir.'</li>'.PHP_EOL;
if (is_dir($dir)) {
// 핸들 획득
$handle = opendir($dir);
while(false !== ($filename = readdir($handle))) {
if($filename == "." || $filename == ".." || $filename == "index.php"){
continue;
}
$sql = "SELECT count(*) as cnt FROM ".$g5[write_prefix].$dirs[count($dirs)-1]." WHERE wr_content LIKE '%$filename%'";
$ret = sql_fetch($sql);
$ct = $ret['cnt'];
$sql2 = "SELECT count(*) as cnt FROM g5_board_file WHERE bf_file = '$filename'";
$ret2 = sql_fetch($sql2);
$ct += $ret2['cnt'];
if( !$ct ) {
$cnt++;
echo '<li> filename : '.$dir.'/'.$filename.' : '.$ct.'</li>'.PHP_EOL;
@unlink($dir.'/'.$filename);
}
flush();
if ($cnt%10000==0) {
echo PHP_EOL;
break;
}
}
// 핸들 해제
closedir($handle);
}
}
echo '<li>완료됨</li></ul>'.PHP_EOL;
echo '<div class="local_desc01 local_desc"><p><strong>파일 '.$cnt.'건의 삭제 완료됐습니다.</strong><br>프로그램의 실행을 끝마치셔도 좋습니다.</p></div>'.PHP_EOL;
?>
<?php
include_once('./admin.tail.php');
?>
게시물을 삭제하고 실행을 하면 분명 data/file/폴더 안에 삭제해당 파일이 남아있는데
지우지를 못하네요..어디부분을 수정을 하고 보안을 해야할지 고수님들 좀 알려주세요
답변 1개 / 댓글 1개
채택된 답변
+20 포인트
2018-09-03 (월) 12:31:43
삭제하는 파일의 data 경로 부분이 제대로 처리되고 있는지 여부 혹은 권한 부분을 체크해 보셔야 할듯 합니다.
답변에 대한 댓글 1개
Darcy
2018-09-04 (화) 04:58:48
오토셋 설치 후 로컬에서 실행하면 잘 작동합니다 하지만 vps에서 실행하면 되었다 안되었다 합니다..ㅠ
답변을 작성하려면 로그인이 필요합니다.