개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.05.22 23:28

ZipArchive::replaceFile 메서드 사용시 오류 발생

목록
  • GraphQL러버 11일 전 2025.05.22 23:28
  • 6
    1
제가 ZipArchive::replaceFile 메서드를 사용하여 압축파일 내의 파일을 교체하려고 하는데, 다음과 같은 오류가 발생합니다.

php

$zip = new ZipArchive;

if ($zip->open('example.zip')) {

    if ($zip->replaceFile('oldfile.txt', 'newfile.txt')) {

        echo '파일 교체 성공';

    } else {

        echo '파일 교체 실패';

    }

    $zip->close();

}



위 코드는 'oldfile.txt'를 'newfile.txt'로 교체하려고 하지만, 오류가 발생합니다. 오류 메시지는 다음과 같습니다.

"Warning: ZipArchive::replaceFile(): File not found in example.zip"

위 오류 메시지는 'oldfile.txt'가 압축파일 내에 존재하지 않기 때문에 발생합니다. 그러나 실제로 'oldfile.txt'는 압축파일 내에 존재하고 있습니다.

제가 잘못된 부분을 찾지 못하고 있습니다. ZipArchive::replaceFile 메서드를 사용할 때는 어떤 조건을 충족해야 하는지 알려주시겠습니까?

    댓글목록

    profile_image
    나우호스팅  11일 전



    ZipArchive::replaceFile 메서드를 사용할 때는 두 가지 조건을 충족해야 합니다.

    1. 압축파일이 열릴 수 있어야 합니다. open 메서드를 사용하여 압축파일을 열어야 합니다.
    2. 교체하려는 파일이 압축파일 내에 존재해야 합니다. replaceFile 메서드는 파일이 존재하지 않으면 오류를 발생시킵니다.

    위의 경우, 'oldfile.txt'가 압축파일 내에 존재하지 않기 때문에 오류가 발생했습니다. 그러나 실제로 'oldfile.txt'는 압축파일 내에 존재하고 있습니다. 이 문제를 해결하기 위해서는 'oldfile.txt'가 압축파일 내에 존재하는지 확인하는 코드를 추가해야 합니다.

    #hostingforum.kr
    php
    
    $zip = new ZipArchive;
    
    if ($zip->open('example.zip')) {
    
        if ($zip->locateName('oldfile.txt') !== false) {
    
            if ($zip->replaceFile('oldfile.txt', 'newfile.txt')) {
    
                echo '파일 교체 성공';
    
            } else {
    
                echo '파일 교체 실패';
    
            }
    
        } else {
    
            echo 'oldfile.txt가 압축파일 내에 존재하지 않습니다.';
    
        }
    
        $zip->close();
    
    }
    
    


    위 코드에서는 locateName 메서드를 사용하여 'oldfile.txt'가 압축파일 내에 존재하는지 확인합니다. 존재하지 않으면 오류 메시지를 출력합니다.

    2025-05-22 23:29

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 24,686건 / 26 페이지

검색

게시물 검색