티스토리 뷰

반응형

실전에서 사용한 아래는 www/output/json 폴더의 오늘 이전 날짜의 JSON 파일을 삭제하는 PHP 코드입니다.

<?php
// JSON 파일이 저장된 폴더 경로
$folderPath = __DIR__ . '/www/output/json';

// 오늘 날짜 구하기
$today = date('Y-m-d');

// 폴더 열기
if (is_dir($folderPath)) {
    if ($dh = opendir($folderPath)) {
        while (($file = readdir($dh)) !== false) {
            $filePath = $folderPath . '/' . $file;

            // 파일인지 확인 및 확장자가 .json인지 확인
            if (is_file($filePath) && pathinfo($file, PATHINFO_EXTENSION) === 'json') {
                // 파일 수정 시간 가져오기
                $fileModifiedTime = date('Y-m-d', filemtime($filePath));

                // 파일 수정 날짜가 오늘 이전인지 확인
                if ($fileModifiedTime < $today) {
                    // 파일 삭제
                    unlink($filePath);
                }
            }
        }
        closedir($dh);
    }
} else {
    echo "폴더가 존재하지 않습니다.";
}
?>

코드 설명

  1. __DIR__를 사용하여 현재 파일의 위치 기준으로 www/output/json 경로를 설정합니다.
  2. date('Y-m-d')를 사용해 오늘 날짜를 가져옵니다.
  3. opendir와 readdir를 이용해 폴더 내의 파일을 순회합니다.
  4. 각 파일에 대해:
    • 확장자가 .json인지 확인.
    • filemtime()로 파일의 마지막 수정 시간을 확인하고 오늘 날짜와 비교.
  5. 오늘 이전의 파일은 unlink()를 통해 삭제합니다.

주의사항

  • 스크립트를 실행하기 전에 중요한 파일이 없도록 확인하세요.
  • 권한 문제로 파일 삭제가 안 될 수 있으니, 폴더와 파일에 적절한 권한을 설정하세요. (chmod 명령 사용 가능)

 

권한문제를 해결하면서 처리하는 코드는 아래와 같아요~

아래는 권한 문제를 방지하기 위해 JSON 파일의 권한을 설정한 후, 오늘 이전의 파일을 삭제하는 PHP 코드입니다.

<?php
// JSON 파일이 저장된 폴더 경로
$folderPath = __DIR__ . '/www/output/json';

// 오늘 날짜 구하기
$today = date('Y-m-d');

// 폴더가 존재하는지 확인
if (is_dir($folderPath)) {
    if ($dh = opendir($folderPath)) {
        while (($file = readdir($dh)) !== false) {
            $filePath = $folderPath . '/' . $file;

            // 파일인지 확인 및 확장자가 .json인지 확인
            if (is_file($filePath) && pathinfo($file, PATHINFO_EXTENSION) === 'json') {
                // 파일의 권한 설정 (읽기, 쓰기, 삭제 가능)
                chmod($filePath, 0666); // rw-rw-rw-

                // 파일 수정 시간 가져오기
                $fileModifiedTime = date('Y-m-d', filemtime($filePath));

                // 파일 수정 날짜가 오늘 이전인지 확인
                if ($fileModifiedTime < $today) {
                    // 파일 삭제
                    if (unlink($filePath)) {
                        echo "파일 삭제 성공: $filePath\n";
                    } else {
                        echo "파일 삭제 실패: $filePath\n";
                    }
                }
            }
        }
        closedir($dh);
    }
} else {
    echo "폴더가 존재하지 않습니다.";
}

// 폴더의 권한도 수정 (쓰기 가능하도록 설정)
chmod($folderPath, 0777); // rwxrwxrwx
?>

추가 설명

  1. 파일 권한 설정 (chmod):
    • 각 파일에 대해 chmod($filePath, 0666)을 호출하여 읽기/쓰기/삭제가 가능하도록 설정합니다.
    • 0666: 모든 사용자에 대해 읽기/쓰기 가능, 실행 권한 없음.
  2. 폴더 권한 설정:
    • 폴더 자체에도 쓰기 권한이 필요할 경우 chmod($folderPath, 0777)을 추가하여 읽기/쓰기/실행 가능하도록 설정합니다.
    • 0777: 모든 사용자에 대해 읽기/쓰기/실행 가능.
  3. 삭제 성공 여부 확인:
    • unlink()의 반환값을 체크하여 삭제 성공 여부를 출력합니다.
  4. 보안 고려:
    • 0777과 같은 권한은 보안에 취약할 수 있으니 필요할 경우 사용하고, 작업 후 더 제한적인 권한으로 변경하세요 (chmod($folderPath, 0755) 등).

실행 전에 확인

  • PHP 스크립트가 실행되는 환경에서 폴더 및 파일이 PHP 프로세스에 의해 읽기 및 쓰기 가능한 상태인지 확인하세요.
  • 권한을 설정해도 서버 설정이나 파일 소유자 제한이 있을 경우 문제가 발생할 수 있습니다. 이 경우 시스템 관리자와 상의하세요.
반응형
댓글